Angularjs 将项目添加到数组中似乎会中断重复
我有一个使用ngRepeat显示的数组,底部有一个表单,可以添加到所述数组中。这用于在早期版本的angular中工作;ngRepeat中跟踪项目的方式在angular的较新版本中发生了变化,因此我还不确定这是否是一个大问题,但当我将项目推送到数组时,所有项目似乎都绑定到同一个模型 以下是我添加项目的方式:Angularjs 将项目添加到数组中似乎会中断重复,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,我有一个使用ngRepeat显示的数组,底部有一个表单,可以添加到所述数组中。这用于在早期版本的angular中工作;ngRepeat中跟踪项目的方式在angular的较新版本中发生了变化,因此我还不确定这是否是一个大问题,但当我将项目推送到数组时,所有项目似乎都绑定到同一个模型 以下是我添加项目的方式: var vm = this; this.items = []; this.addItem = function(item) { vm.items.push(item); } 我像
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>
- {{item.id}-{{item.value}
添加项
下面是一个演示问题的示例。用户回答
在将项目添加到数组之前,需要创建项目的副本
vm.items.push(angular.copy(item));
这很正常:
newItem
总是同一个对象。只需在addItem
函数中复制它,例如使用vm.items.push(angular.copy(item))代码>是的,这就解决了。谢谢你有没有在你的控制器里声明过新项目?您正在引用一个main.newItem,但我没有看到它被声明。没有声明它,没有必要声明它。有趣的是,我不知道。谢谢