0

我想在Angular 1.3中有動態路由。類似於它所描述的herehere。這些示例提示如下:Angular路由的動態頁面

$routeProvider.when('/:group/:pagename', { 
    controller: 'RouteCtrl', 
    templateUrl: 'uirouter.html' 
}) 

然後控制器將通過$ routeParams訪問組和頁面名稱。該工程

我試圖讓這個路由多了幾分活力和具有模板和控制器來選擇動態,以及:

$routeProvider.when('/:group/:pagename', { 
    controller: $routeParams.group + 'Ctrl', 
    templateUrl: $routeParams.pagename + '.html' 
}) 

當我把一個斷點when我可以看到,有$獲取具有$ routeParams作爲參數之一的函數的屬性。但我無法弄清楚如何檢索它的值。

該項目是在很早的階段 - 我可以與ui路由器或ng路由器,如果他們有任何這種功能。

回答

2

對於動態templateUrl部分你可以嘗試:

$routeProvider.when('/:group/:pagename', { 
    controller: "SomeCtrl", 
    templateUrl: function(params){return params.pagename + '.html';} 
}) 

不知道是否相同可以用控制器不過來完成。

2

取而代之的是直接價值的,你可以聲明一個函數會返回一個templateUrl字符串,即:

$routeProvider.when('/:group/:pagename', { 
    controller: $routeParams.group + 'Ctrl', 
    templateUrl: function (routeParams) { 
     return routeParams.pagename + '.html'; 
    } 
}); 

我猜想的一樣可以爲controller是真實的,但你必須測試一出來,如我從來沒有用它來控制器。這就是說,如果你在這個地方有這麼多的動態邏輯,也許不是把它當作不同的控制器來對待,你可以將這些視圖封裝爲不同的指令,並且根據$routeParams將這些視圖封裝爲不同的指令,這些指令將被設置爲一個包裝控制器?

+0

TemplateUrl是現貨(我很尷尬,我錯過了它......但我怎麼到控制器中的'$ routeParams'?我試圖注入,並且它給了我「未知提供者」 – Felix