将项目添加到数组似乎会破坏 ngRepeat

Adding items to an array seems to break ngRepeat

我有一个使用 ngRepeat 显示的数组,底部有一个表单可以添加到所述数组。这用于以前版本的 angular; ngRepeat 中跟踪项目的方式在 angular 的较新版本中发生了变化,所以我不确定这是否很大,但是当我将项目推送到数组时,所有项目似乎都绑定到同款

这是我添加项目的方式:

var vm = this;

this.items = [];

this.addItem = function(item) {
    vm.items.push(item);
}

然后我像这样遍历它们:

<ul>
    <li ng-repeat="item in main.items track by $index">{{item.id}} - {{item.value}}</li>
</ul>
<hr>
<input ng-model="main.newItem.id" type="text" placeholder="id">
<input ng-model="main.newItem.value" type="text" placeholder="value">
<button ng-click="main.addItem(main.newItem)">Add Item</button>

这里 plnkr 演示了这个问题。

用户回答Blackhole

需要在将项目添加到数组之前复制该项目

vm.items.push(angular.copy(item));