刷新没有$ scope的ng-repeat,没有新的服务请求

时间:2016-06-08 05:38:43

标签: angularjs angularjs-ng-repeat angularjs-controlleras

我有一个包含此内容的表格:

 <tbody>
     <tr ng-repeat="result in ctrl.result track by $index">
       <td ng-bind="$index+1"></td>
       <td ng-bind="::result.title"></td>
       <td> <button type="button" class="btn" ng-click='ctrl.deleteItem(result)'>Delete</button></td>
     </tr>
 </tbody>  

在我的控制器中,我有:

 vm.deleteItem = function (result) {
        myService.deleteItem(result.id)
           .then(function (response) {
                vm.result.splice(result, 1);
            });
    };

如您所见,如果成功删除项目,则vm.result已更改。 现在,该项目已在db中删除,因此我们有响应,然后该项目也已从vm.result中删除。但该列表尚未在浏览器中更新 如您所见,我使用的是controller as方法,而不是$scope

2 个答案:

答案 0 :(得分:1)

尝试以这种方式删除项目:

vm.result.splice(vm.result.indexOf(result), 1);

第一个Splice参数应该是元素的索引而不是元素本身。

答案 1 :(得分:0)

     var index = vm.result.findIndex(function(item) {
                if (item.id == test.id) {
                    return true;
                }
            });

            if (index !== -1) {
                // Removing the test from list;
                vm.result.splice(index, 1);
}

根据数组中的id检查test.id是删除元素的id