我使用ui-router
路由控制一个页面,该页面包含多个共享同一个控制器的子页面:
.state('users.create', {
url: "/create",
views: {
'': { templateUrl: 'pages/users.html',
controller : 'UsersCtrl'
},
'main@users': {
templateUrl: 'pages/users.new.html',
controller : 'UsersCtrl', parent:'users'},
'list@users': {
templateUrl: 'pages/users.list.html',
controller: 'UsersCtrl', parent:'users' }
}
})
当我致电users.create
时,UsersCtrl
将被召唤3次。
我在updateListButton()
中有一个仅对UsersCtrl
有用的特定功能pages/users.list.html
。
每当我想要更新updateListButton()
时,我该如何专门致电pages/users.list.html
?
答案 0 :(得分:0)
我不是一个忠实的粉丝,但可能的解决方案是在ng-init
的根HTML元素中使用pages/users.list.html
,如下所示:
<div ng-init='updateListButton()'>
<h1>Users List</h1>
</div>
但考虑到(根据AngularJD Documentation):
可以滥用此指令将不必要的逻辑量添加到模板中。 ngInit只有少数适当的用途,例如用于别名ngRepeat的特殊属性,如下面的演示所示;并通过服务器端脚本注入数据。除了这几种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。