Ui-router вложенный контроллер маршрута не вызывается
Я пытаюсь вызвать контроллер, который должен быть связан с маршрутом home.category
, но он не вызывается. Что в этом плохого?
$stateProvider
.state("home", {
// Use a url of "/" to set a states as the "index".
url: "/",
templateUrl: APP_CONFIG.baseUrl +
'partials/layouts/home.html',
controller: 'MainCtrl'
})
.state("home.category", {
// Use a url of "/" to set a states as the "index".
url: "c/:categoryId/:categorySlug",
controller: function($stateParams) {
alert($stateParams.categoryId);
}
})
Ответы
Ответ 1
Ну, я нашел ключ из данной документации ui-router
, говорит
Вы можете назначить контроллер вашему шаблону. Предупреждение: Контроллер не будет создан, если шаблон не определен.
https://github.com/angular-ui/ui-router/wiki#controllers
Но я попытался добавить template
и все еще не работал, тогда я увидел, что у моего родительского шаблона маршрута не было <div ui-view></div>
(я ошибочно удалил его), поэтому, когда я добавил его обратно, он работал:), Итак, чтобы создать экземпляр нашего контроллера детского маршрута, мы должны иметь <div ui-view></div>
в нашем родительском шаблоне маршрута.
Ответ 2
Другая причина, по которой контроллер не может быть вызван, - это если у вас несколько представлений для состояния и не помещайте контроллер внутри объекта views. Это трудно найти, потому что ошибки нет. Это просто не вызвано.
Этот контроллер не будет вызываться:
.state('home', {
url: '/',
controller: function($scope){ $scope.someThings = "some stuff"; },
views: {
"view1": {
template: '<p>{{someThings}}</p>'
},
"": {
template:
'<p>Some other stuff</p>'
}
}
})
Контроллер должен войти в объект вида:
.state('home', {
url: '/',
views: {
"view1": {
template: '<p>{{someThings}}</p>',
controller: function($scope){ $scope.someThings = "some stuff"; },
},
"": {
template:
'<p>Some other stuff</p>'
}
}
})
Ответ 3
В отключенном случае кто-то меняет проект на работу с ui.router, в отличие от ngRoute, у меня была эта проблема, потому что я забыл изменить директиву ng-view на ui-view: Z