【发布时间】:2014-06-12 15:27:36
【问题描述】:
我最近开始学习 angularjs,使用 restangular 与我的 restfull API (sails) 对话。我偶然发现的问题是,在我更改范围内的列表后,ng-repeat 没有更新。
控制器:
app.controller('UsersCtrl', ['UsersSvc', '$scope', function(UsersSvc, s) {
UsersSvc.getList().then(function (new_users) {
s.users = new_users;
})
s.destroy = function (user) {
user.remove().then(function () {
s.users = _.without(s.users, user);
});
}
}]);
服务:
app.factory('UsersSvc', function(Restangular) {
return Restangular.all('users');
});
模板:
<div ng-controller="UsersCtrl">
...
<tr ng-repeat"user in users">
<td>{{user.firstName}}</td>
<td>{{user.lastName}} </td>
<td>{{user.emailAddress}}</td>
<td>{{user.age}}</td>
</tr>
...
</div>
当我检查范围时,restangular 对象数组已正确分配给用户控制器的范围,但模板拒绝更新。
提前致谢
【问题讨论】:
-
我看不到你在哪里定义了
usr.users。你也可以添加这部分吗? -
复制时 usr 部分是拼写错误。我指的是 UsersCtrl 范围内的用户变量。
-
我认为
s指的是$scope是否正确。还有为什么不试试 console.log 承诺的结果,看看你得到了什么 -
没错。 promise 的结果返回一个正确的 json 数组,并且 users 变量相应地改变。主要问题是模板的 ng-repeat 部分不会在 users 变量发生变化时自行更新。
标签: angularjs node.js sails.js restangular