javascript - 删除作用域中的对象

标签 javascript angularjs

这个问题甚至可能与 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 中,我们应该在其中显示部门和用户名。如果我想删除某个特定用户,我会进行 api 调用,成功后我想删除该对象。所以我有一个像这样的js方法

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

我的问题是,如果我想删除这个对象,有没有更简单的方法可以从模型中删除,因为我这里有这个对象,或者我必须使用经典的 jquery 方法来使用类似的方法$.grep 或过滤器迭代每个对象并按 id 匹配然后删除它?

最佳答案

大概,您正在迭代模板中的部门(会计、销售),然后迭代该部门中的用户。

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

<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

关于javascript - 删除作用域中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47873085/

相关文章:

javascript - 通过两个类选择元素并仅更改该特定元素的 css 属性

javascript - 弹跳接触按钮移动到底部

AngularJS 代码理解

angularjs - 使用组件作为 $mdDialog 的内联模板

javascript - angularjs 指令隔离范围

angularjs - 在angular js中处理来自$resource的数据响应

Javascript:我可以访问隐藏 iframe 中加载的文件的源吗

对象内的javascript空数组

javascript - 将单击事件分配给 Image 对象

angularjs - 无法在 AngularJS 中集中输入