在没有 $scope 的情况下刷新 ng-repeat,没有新的服务器请求
Refreshing ng-repeat without $scope, without new request to sever
我有一个 table 内容如下:
<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
.
试试这样删除项目:
vm.result.splice(vm.result.indexOf(result), 1);
第一个Splice参数应该是元素的索引而不是元素本身。
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
我有一个 table 内容如下:
<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
.
试试这样删除项目:
vm.result.splice(vm.result.indexOf(result), 1);
第一个Splice参数应该是元素的索引而不是元素本身。
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