Angularjs如何更新部分模板

时间:2014-12-01 14:53:27

标签: angularjs service controller

我想知道每当我改变状态时如何使控制器功能工作。 这是我的Angular应用程序的主要模板:

<div>
    <div ng-include="'/navigation.html'"></div>
    <div>
        <!-- Page wrapper -->
        <div ng-include="'/topnavbar.html'"></div>
        <!-- Main view  -->
        <div ui-view></div>
        <!-- Footer -->
        <div ng-include="'/footer.html'"></div>
    </div>
</div>

在导航面板中,我有ng-repeat:

<ul ng-controller="NavigationCtrl" class="nav nav-second-level">
    <li ng-repeat="user in users" ui-sref-active="active">
       <a ui-sref="account">{{user.name}}</a>
    </li>
</ul>

因此,每当我更改状态时,我都希望更新此范围var 用户。 我认为这是众所周知的问题,但我是Angular的新人,请帮助我。

1 个答案:

答案 0 :(得分:2)

嗯,我在这里看到两种方式:

1)监听状态事件,并进行更新用户数据的回调。文档:https://github.com/angular-ui/ui-router/wiki#state-change-events

2)我假设用户数组来自服务,例如:

...
$http.get('/users', function(data){
  return data;
});
...

所以,不是这样,你可以在服务中本地存储一个数组(这是单例),并从任何地方更新它,这样你就可以在&#39; NavigationCtrl&#中找到一个数组的链接39;和数据也将在那里更新。

我的意思是:

function UserService($http) {
  var users = []; //inital array
  var updateUsers = function() {
     //get to update users here
  };
  var getUsers = fucntion() {
    return users;
  }

  return {
    updateUsers : updateUsers, //this method will be called when you need to update user list
    getUsers : getUsers //this method will be called in NavigationCtrl
  }
}

<强>更新

这就是我在第2页http://plnkr.co/edit/U2XwXNEqAxRrEa0VpYAu?p=preview

中的意思