簡體   English   中英

角$ routeProvider可覆蓋的后備路由

[英]Angular $routeProvider override-able fallback routes

我正在創建我的第一個可觀的角度項目,因此我選擇將角度應用程序代碼分解為以下目錄:

app/
    calendar/
        calendar.js
    contacts/
        contacts.js
    companies/
        companies.js    
    ...
    app.js

這些目錄中的每一個都將包含一些用於視圖(.html),指令,服務等的文件。

在我的app.js文件中,我想設置可能在80%的時間內使用的默認路由,如下所示:

$routeProvider
    .when('/:page', {
        templateUrl: function($routeParams) {
            return 'app/' + $routeParams.page + '/index.html';
        },
        controller: 'PageController'
    })

但是,我希望能夠從模塊內部“覆蓋”該路由,以便執行交換控制器,進行依賴項注入之類的工作。 我希望模塊本身內包含的那種邏輯可以使事情保持良好……模塊化,因此我寧願不在app.js定義每個模塊的路由邏輯。 因此,例如,在我的app/calendar/calendar.js文件中,我想說:

$routeProvider
    .when('/calendar', {
        templateUrl: 'app/calendar/index.html',
        controller: 'CalendarIndexController', 
        resolve: { ... }
    })

問題在於app.js中的定義首先與位置匹配,因此永遠不會使用此日歷路由。

為了實現這一點,現在我只是在所有模塊javascript文件之后最后添加了一個文件,該文件最后設置了我的后備路由,但這似乎有些笨拙。 無論如何,有沒有在app.js定義路由,以便它們可以被覆蓋?

您可能可以采用此技術來動態加載Dan Wahlin所描述的控制器,此處http://weblogs.asp.net/dwahlin/dynamically-loading-controllers-and-views-with-angularjs-and-requirejs與默認值結合使用路由參數控制要加載哪個視圖的位置。 您可以將同一頁面參數傳遞給resolve函數,以控制要提供哪種視圖和控制器組合?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM