我想開始使用Angular的ui路由器代替ngRoute。最初,我的應用配置看起來像
myApp.config(["$routeProvider",
function($routeProvider) {
$routeProvider
.when("/search", {
templateUrl: "partials/customerSearch.html"
})
.when("/home", {
templateUrl: "partials/home.html"
})
.when("/login", {
templateUrl: "partials/login.html",
controller: "LoginCtrl"
})
.otherwise({
redirectTo: "/home"
})
;
}
]);
我換出了庫,並更改了配置。我知道我可能仍然使用$routeProvider
,但這似乎是一個傳統的解決方法。
myApp.config(["$urlRouterProvider", "$stateProvider",
function($urlRouterProvider, $stateProvider) {
$urlRouterProvider
.when("/search", "partials/customerSearch.html")
.when("/home", "partials/home.html")
.when("/login", "partials/login.html")
.otherwise("/home")
;
$stateProvider
.state({
name: "customer",
url: "/customer/:username",
templateUrl: "partials/customer.html"
})
.state({
parent: "customer",
name: "details",
url: "/details",
templateUrl: "partials/customerDetails.html"
})
;
}
]);
這給我錯誤似乎表明$digest
卡在一個循環。我懷疑.otherwise("/home")
規則。我是否正確指定了handler
,就好像它們是模板網址一樣?
如果我註釋掉.when()
s,除"/customer/:username"
之外沒有任何工作。我必須爲每條路線定義一個狀態嗎?如果是這樣,$urlRouterProvider
和$stateProvider
都有什麼意義?有不同的提問,每個人應該做什麼?
踢ngRoute到路邊。在ui-router github的demo plnkr列表中查看配置。您的.states沒有列出控制器,但「/ customer /:username」會在控制器中調用$ scope。 – cheekybastard
我發現這個:http://plnkr.co/edit/u18KQc?p=preview。它顯示了一個'controller'屬性,但樣本全都看起來像模擬控制器(匿名函數)。我嘗試使用我的控制器之一的名稱,無論是引用還是不引用,但這似乎不起作用。 此外,該應用程序似乎仍然不是路由。 – N13
我不知何故錯過了wiki中非常明確標記的「控制器」部分:https://github.com/angular-ui/ui-router/wiki#wiki-controllers。感謝你對我謙遜。我仍然不清楚如何處理'$ urlRouterProvider',或者我是否需要爲每條以前的路由定義一個狀態(在您的答案中也有提問)。 – N13