2015-12-18 74 views
0

我使用ui-router路由控件的頁面與共享同一控制多個子頁面:angularjs - UI路由器 - 僅調用函數時,某些子頁面加載

.state('users.create', { 
     url: "/create", 
     views: { 
       '': { templateUrl: 'pages/users.html', 
       controller : 'UsersCtrl' 
        }, 
       '[email protected]': { 
        templateUrl: 'pages/users.new.html', 
        controller : 'UsersCtrl', parent:'users'}, 
       '[email protected]': { 
        templateUrl: 'pages/users.list.html', 
        controller: 'UsersCtrl', parent:'users' } 
      } 
    }) 

目前,每當我打電話users.createUsersCtrl將被調用3次。 和我有一個特定的功能updateListButton()UsersCtrl只對pages/users.list.html有用。

我該如何特別呼叫updateListButton()每當我想更新pages/users.list.html

回答

0

我不是一個大風扇,但一個可能的解決辦法是使用ng-initpages/users.list.html根HTML元素像這樣:

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

但考慮到(根據AngularJD Documentation):

該指令可能會被濫用將不必要的邏輯添加到您的模板中。 ngInit只有少數適​​當的用法,例如用於重寫ngRepeat的特殊屬性,如下面的演示所示;並通過服務器端腳本注入數據。除了這幾種情況之外,您應該使用控制器而不是ngInit來初始化作用域上的值。