javascript - 当从作用域中删除对象时,它会隐藏 Angularjs 中的其余部分

标签 javascript angularjs angularjs-scope

我的 $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 = 3id = 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/

相关文章:

javascript - 延迟 Angular Directive(指令)模板的编译,直到功能完成

javascript - Angular - 来自 Controller 对象的 ng-init 复选框值

javascript - $scope 和此技术在通过服务共享数据方面有何不同?

javascript - 目标单个复选框值

javascript - 外部 JS 文件中的 PHP Session 变量为空

javascript - Angular 提示缺少一个根本没有声明的模块我

angularjs - 在 Angular 中与嵌套指令共享隔离范围

javascript - 在 Angular 应用程序中加载 Highcharts

javascript - 在 Iphone Web 应用程序上使用 canvas drawImage() 函数

javascript - 我的 HTML 按钮将我重定向到这个奇怪的 "Index of C:\"内容。我如何解决它?