Restangular反应和ng重复

我最近开始学习使用restangular与我restfull API(帆)交谈的angularjs。 我偶然发现的问题是,在更改范围中的列表后,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> 

当我检查范围时,冗余对象数组被正确地分配给用户控制器的范围,但模板拒绝更新。

提前致谢

AngularJS(和JavaScript)关心引用与覆盖。 所以为了安全,我总是先设置我的范围variables,然后使用angular.copy()Restangular.copy() (如果它是一个Restangular对象被设置)更新。

下面是我如何重构您的控制器,以确保绑定+摘要循环保持连接。

(请注意,我将其重命名为“传统” $scope ,以便于其他人阅读)

 app.controller('UsersCtrl', ['$scope', 'UsersSvc', 'Restangular', function($scope, UsersSvc, Restangular) { // we're expecting a list, so default as array $scope.users = []; UsersSvc.getList().then(function (new_users) { // In normal $resource/ng projects use: angular.copy(src, dst) but // Restangular has an issue when using angular.copy(): // https://github.com/mgonto/restangular/issues/55 // so use their version of copy(): Restangular.copy(new_users, $scope.users); }); $scope.destroy = function (user) { user.remove().then(function () { $scope.users = _.without($scope.users, user); }); } }]);