更新数组中的元素

时间:2013-07-11 10:38:45

标签: javascript angularjs

我正在使用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

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

1 个答案:

答案 0 :(得分:1)

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

你应该做的是

  1. 找到要删除的用户的索引(使用某些循环结构,如$ .each)
  2. 将元素拼接出来(在循环之外)。
  3. 加回来。
  4. 这样的东西
    $.each($scope.users, function (index, value) {
        if (value['empId'] == $scope.userToAdd.empId) {
            userFoundAt=index;
        }
    });
    $scope.users.splice(userFoundAt, 1);
    $scope.users.push($scope.userToAdd);