ui路由器嵌套的路由控制器没有被调用
我正试图调用一个控制器,应该与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); } })
那么,我发现从ui-router
给出的文件的线索说
您可以将控制器分配给您的模板。 警告:如果未定义模板,控制器将不会被实例化。
https://github.com/angular-ui/ui-router/wiki#controllers
但我试图添加template
,仍然没有工作,然后我看到我的父路由模板没有<div ui-view></div>
(我错误地删除它),所以当我加回它的工作: ),所以,为了实例化我们孩子的路线控制器,我们必须在父母的路线模板中有<div ui-view></div>
。
控制器可能不被调用的另一个原因是如果你有一个状态的多个视图,而不把控制器放在视图对象内。 这是很难find的,因为没有错误。 它只是不被调用。
这个控制器不会被调用:
.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>' } } })
在closures事件有人正在改变一个项目与ui.router工作,而不是ngRoute,我有这个问题,因为我忘了把ng-view指令改为ui-view:Z