我的 $scope.clients
中有一个客户端列表,我使用 ng-repeat
来显示它。
<tr ng-repeat="client in clients">
<td class="l-h-3x">{{client.name}}</td>
<td class="l-h-3x p-t-md text-right">
<button type="button" ng-click="deleteUser($index)>Delete</button>
</td>
</tr>
现在,如果我删除列表中的最后一个 client
,它会完美地工作,它会将其从我的数据库中删除,并将其从 $scope.clients
中删除。当我删除任何不是最后一个的客户端
时,问题就出现了。它从我的数据库中删除了正确的 client
,并将其从我的 $scope.clients
中删除,但随后它隐藏了所有剩余的 client
如下。
外汇。
$scope.clients [
{id: 1, name: 'Adam'},
{id: 2, name: 'Nadja'},
{id: 3, name: 'Marc'},
{id: 4, name: 'Casper'}]
我删除了 client
其中 id = 3
它的工作原理就像一个魅力,但是当我删除 client
其中 id = 2
,它从我的数据库中删除它并将其从范围中删除,但也隐藏了 client
其中 id = 3
和 id = 4
.
下面是我目前用来删除客户端
的函数
$http.delete(api.getUrl('user', person_to_delete.id), {
user: $scope.user
})
.success(function(data, status, headers, config) {
$scope.clients.splice(idx, 1);
})
.error(function(data, status, headers, config) {
});
在审查我的问题(在您输入的帮助下)后,我发现了一些愚蠢的错误(对此感到抱歉),我现在更新了我的帖子,但我仍然遇到同样的问题。删除client
2后,它仍然隐藏client
3和4
最佳答案
不详细介绍您的代码,请查看此 fiddle我已经用它构建了。看起来它正如您所期望的那样。
<html ng-app="clientsApp">
<head>
<script src="https://code.angularjs.org/1.3.14/angular.min.js"></script>
<script>
var app = angular.module("clientsApp", []);
app.controller("clientsCtrl", function($scope) {
$scope.clients = [
{id: 1, name: 'Adam'},
{id: 2, name: 'Nadja'},
{id: 3, name: 'Marc'},
{id: 4, name: 'Casper'}];
$scope.deleteUser = function(idx) {
var person_to_delete = $scope.clients[idx];
for (var i = $scope.clients.length; i--;) {
var user = $scope.clients[i];
if ($scope.clients.indexOf(user) == idx) {
$scope.clients.splice(i, 1);
}
}
};
});
</script>
</head>
<body ng-controller="clientsCtrl">
<table>
<tr ng-repeat="client in clients">
<td class="l-h-3x">{{client.name}}</td>
<td class="l-h-3x p-t-md text-right">
<button type="button" ng-click="deleteUser(clients.indexOf(client))">Delete</button>
</td>
</tr>
</table>
</body>
</html>
关于javascript - 当从作用域中删除对象时,它会隐藏 Angularjs 中的其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29237840/