AngularJs - ng-repeat + instance。$ remove不会更新视图

时间:2014-06-03 12:18:12

标签: angularjs angularjs-ng-repeat

我有两个功能:一个用于删除数据,另一个用于更新数据。数据来自Resource.query()。

我使用ng-repeat来检查集合中的每个元素。由于每个元素都是一个Resource对象,我想我应该可以应用$ save,$ remove,... operations。

Html可以简单如下:

<tr ng-repeat="data in data_collection">
    <td>
        <a class="btn btn-info" ng-click="togglePublish(data,'country')">RELEASE</a>
    </td>
    <td>
        <div>
            <button class='btn btn-danger' ng-click="remove(data)">Delete</button>
        </div>
    </td>
</tr>

为什么我这样做:

// Arg: data is a Resource object from the collection
$scope.remove = function(data){
    data.$remove();       //  <-----   THIS DOES NOT MODIFY THE VIEW
}

但这是正确更新数据:

// Arg: original_data is a Resource object from collection 
$scope.togglePublish = function(original_data, country){

    // Deep copy
    var copy = angular.copy(original_data);

    // Modifications over the copy
    copy = toogleRegionPublication(copy, country);

    Resource().update(copy).$promise.then(function(){
        // If update was taken, then update view value
        original_data.regions = copy.regions;    // <---  THIS MODIFIES THE VIEW
    });
}

为什么其中一个对视图有影响但不涉及$ remove操作?为什么呢?

2 个答案:

答案 0 :(得分:1)

据我了解

  

$除去

只是一个HTTP DELETE方法调用你的restful资源。

答案 1 :(得分:0)

要从视图中删除data对象,我认为您可以将其从data_collection数组中删除。 See how to remove object from array.

但是,如果您仍需要调用http DELETE从数据库中删除data对象,则还需要执行此操作。