Я хочу начать использовать Angular ui-router вместо 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
, как если бы они были шаблонами URL?
Если я комментирую .when()
s, ничего не работает, кроме "/customer/:username"
. Должен ли я определять состояние для каждого маршрута? Если да, то в чем смысл иметь как $urlRouterProvider
, так и $stateProvider
? На вопрос по-другому, что каждый должен делать?