这个问题甚至可能与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匹配然后删除它?
答案 0 :(得分: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
的值,请使用上述部分。