在ng-repeat

时间:2015-08-03 12:24:05

标签: angularjs

我有一个对象数组,因此需要允许用户添加与另一个项目重复的项目。当它们增加一个名为“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?

有没有办法创建一个与传入的项目相同但又是不同对象的新项目?

2 个答案:

答案 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);
     }
   };