如何在添加重复的密钥对象时更新ng-repeat列表中的元素

时间:2015-01-09 22:25:08

标签: javascript angularjs

<table>
    //thead[...]
    <tr ng-repeat="user in users track by user.username">
        <td>{{user.username}}</td>
        ...
    </tr>
</table>

每当我在ng-repeat列表中添加其键重复的元素($scope.users.push(newUser);)时,我都会收到错误:

Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: user in users, Duplicate key: username

我对此感到满意,但我希望使用新对象的值更新旧对象。换句话说,我希望它更新或替换。

我在谷歌找不到任何帮助,所以我迷路了。

2 个答案:

答案 0 :(得分:0)

使用.splice代替.push来添加/删除(基本上替换)数组中的项目。

答案 1 :(得分:0)

烦人,因为它可能是类似的(更多的是伪代码,因为我真的不知道你的大部分代码):

for (var i =0; i <=length_of_array; i++){
   if  (array[i].admin == new_element.admin)
   {
       array[i] = new_element;
      new_element =null;
   }
}
if (new_element != null)
{
   array.push(new_element)
}

就像我说的那样,基本上没有我推荐的背景,我不是角度专家,但除非有一个我不知道的特定角度解决方案,否则这是另一种选择。