0

我正在使用 Angularjs。我有一个表,用户可以在其中添加和更新用户列表。当有人编辑现有用户时,我首先从范围数组中删除该用户,然后推送更新的对象。

$.each($scope.users, function (index, value) {
  if (value['empId'] == $scope.userToAdd.empId) {
    console.log(index);
    $scope.users.splice(index, 1);
  }
});
$scope.users.push($scope.userToAdd);

这是解决这个问题的最佳方法吗?我遇到的第二个问题是在我拼接的线上。Angular 抛出一个错误,内容如下:

Error: value is undefined

该元素仍被删除,但此错误阻止了推送的发生。我感觉这与范围有关,但可以找到答案。谢谢!

4

1 回答 1

1

您的代码的问题是您在迭代数组时从数组中删除,这是不一致的。

你应该做的是

  1. 找到您要删除的用户的索引(使用一些循环结构,如 $.each)
  2. 将元素拼接出来(在循环外)。
  3. 加回来。

就像是

$.each($scope.users, function (index, value) {
    if (value['empId'] == $scope.userToAdd.empId) {
        userFoundAt=index;
    }
});
$scope.users.splice(userFoundAt, 1);
$scope.users.push($scope.userToAdd);
于 2013-07-11T11:00:07.000 回答