删除Scope中的对象

问题描述 投票:0回答:1

这个问题甚至可能与angularjs无关,解决方案可能是普通的旧js或jquery。但这就是我要发现的东西。

我想为特定用户实现删除功能,我想知道是否有更简单的方法在angularjs中执行此操作,还是应该是普通的旧JS?

我有一个相当复杂的对象,例如(最多4个级别):

{
  "Department": [
    {
      "Name": "Accounting",
      "users": [
        {
          "id": "1",
          "firstName": "John",
          "lastName": "Doe",
          "age": 23
        },
        {
          "id": "2",
          "firstName": "Mary",
          "lastName": "Smith",
          "age": 32
        }
      ]
    },
    {
      "Name": "Sales",
      "users": [
        {
          "id": "3",
          "firstName": "Sally",
          "lastName": "Green",
          "age": 27
        },
        {
          "id": "4",
          "firstName": "Jim",
          "lastName": "Galley",
          "age": 41
        }
      ]
    }
  ]
}

这显示在ng-repeat中,我们应该使用Department和username。如果我想删除特定用户,我进行api调用并成功,我想删除该对象。所以我有一个像这样的js方法

function DeleteUser(user) {
    $.each(ctrl.UserData, function(index, value) {
        var filteredPeople = value.filter((item) => item.id !== user.id);
    });

我的问题是,如果我想删除这个对象是有任何更简单的方法从模型中删除,因为我有这里的对象或我必须使用经典的jquery方式使用像$ .grep或filter迭代每个对象和id匹配然后删除它?

javascript angularjs
1个回答
1
投票

据推测,您在模板中的部门(会计,销售)上进行迭代,然后在该部门的用户上进行迭代。

所以你可以在你的模板中:

<button ng-click="deleteUser(user, department)">...</button>

因此,该方法可以如此简单

$scope.deleteUser = function(user, department) {
  // delete user from backend, then
  department.users.splice(departments.users.indexOf(user), 1);
}

如果你真的不想通过部门,那么循环部门,如果departments.users.indexOf(user)返回一个>= 0的值,则使用上面的部分。

© www.soinside.com 2019 - 2024. All rights reserved.