我想知道每当我改变状态时如何使控制器功能工作。 这是我的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的新人,请帮助我。
答案 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
}
}
<强>更新强>
中的意思