Angularjs:ng-repeat with clone功能

时间:2014-11-07 11:04:02

标签: angularjs angularjs-ng-repeat

我有一个对象数组,我可以克隆"行" (对象)填充数组。它可以工作但是当我修改任何值时,数组的所有对象都会更新。

TL; DR :克隆的行必须具有独立的值

<ul>
    <li ng-repeat="comment in comments track by $index">
        <input type="text" ng-model="comment.text">

        <button type="button" ng-click="cloneRow(comment)">Clone this row</button>
    </li>
</ul>

JS:

$scope.comments = [
    { text: 'test' }
];

$scope.cloneRow = function(comment){
    $scope.comments.push(comment);
};

当前案例:

  1. 点击&#34;克隆此行&#34;
  2. 在克隆输入中键入任何内容
  3. 第一个输入的值已更改
  4. 需要案例:

    1. 点击&#34;克隆此行&#34;
    2. 在克隆输入中键入任何内容
    3. 第一个输入的值未更改
    4. 克隆输入的值已更改
    5. 以下是 plunkr

2 个答案:

答案 0 :(得分:7)

使用angular.copy()创建深层副本或克隆实际对象引用:

$scope.comments.push(angular.copy(comment));

updated plunkr


angular.copy()创建原始对象的克隆并更新副本而不是实际对象。

答案 1 :(得分:0)

似乎你有对象的引用,你必须复制,而不是引用你的对象。

使用angular.copy()复制新对象中的对象attr值,而不是复制此引用