Javascript 更新数组中的元素

Javascript 更新数组中的元素,javascript,angularjs,Javascript,Angularjs,我用的是Angularjs。我有一个表,用户可以在其中添加和更新用户列表。当有人编辑现有用户时,我首先将该用户从作用域数组中删除,然后推送更新的对象 $.each($scope.users, function (index, value) { if (value['empId'] == $scope.userToAdd.empId) { console.log(index); $scope.users.splice(index, 1); } }); $scope.user

我用的是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

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

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

你应该做的是

  • 查找要删除的用户的索引(使用一些循环构造,如$.each)
  • 将元件拼接出来(在回路外部)
  • 把它加回去
  • 差不多

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

    而不是放置$scope.users.push($scope.userToAdd);最后,将此代码放在$scope.users.splice(索引,1)之后;这将解决问题。您也可以直接使用ng grid开箱即用选中此项->向下滚动至
    编辑聚焦单元格选择示例
    ,plnkr->修改ng grid以满足您的需要。