angularjs - ui-router - 仅在加载某个子页面时调用函数

时间:2015-12-18 09:54:56

标签: javascript angularjs

我使用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

1 个答案:

答案 0 :(得分:0)

我不是一个忠实的粉丝,但可能的解决方案是在ng-init的根HTML元素中使用pages/users.list.html,如下所示:

<div ng-init='updateListButton()'>
    <h1>Users List</h1>
</div>

但考虑到(根据AngularJD Documentation):

  

可以滥用此指令将不必要的逻辑量添加到模板中。 ngInit只有少数适​​当的用途,例如用于别名ngRepeat的特殊属性,如下面的演示所示;并通过服务器端脚本注入数据。除了这几种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。