我有一个对象数组,因此需要允许用户添加与另一个项目重复的项目。当它们增加一个名为“HasPers”的属性为真的数量时触发它。
HTML标记如下所示:
<td width="10%"><input type="number" value="{{productdetails.Quantity}}" ng-model="productdetails.Quantity" min="1" ng-change="change(productdetails)" /></td>
,功能是:
$scope.change = function (item) {
if (item.HasPers) {
item.Quantity = 1;
$scope.items.push(item);
}
};
最初这在转发器wherby中有一个问题,它知道它是一个重复的对象但是通过在转发器中添加'track by $ index'来解决这个问题
<tr ng-repeat="productdetails in items track by $index">
http://mutablethought.com/2013/04/25/angular-js-ng-repeat-no-longer-allowing-duplicates/
但该项目显然仍然与原始项目相关联,因为当我更改原始项目上的某些属性时,它们也会在重复项目上进行更改。我真的想避免再次输入所有属性,如
How to add new key in existing array in angular js?
有没有办法创建一个与传入的项目相同但又是不同对象的新项目?
答案 0 :(得分:3)
试
$scope.change = function (item) {
if (item.HasPers) {
var copyItem=angular.copy(item);
copyItem.Quantity = 1;
$scope.items.push(copyItem);
}
};
答案 1 :(得分:1)
尝试使用angular.copy
$scope.change = function (item) {
if (item.HasPers) {
var newItem = angular.copy(item);
newItem.Quantity = 1;
$scope.items.push(newItem);
}
};