在angular.copy之后,Source会丢失参考

时间:2015-07-25 23:49:28

标签: angularjs copy

我有一个项目列表。要编辑一个我只是通过一个函数传递它。

<ul>
    <li ng-repeat="item in itemList" ng-click="edit(item)">{{item.name}}</li>
</ul>

在函数内部,我制作了项目的副本,以便用户可以直接编辑而不会影响它。我想在成功回复表单后才更新项目。

itemCopy = angular.copy(item);
// pass itemCopy to a form, edit, submit and get response
if (response.success) {
    item = itemCopy; // Update item with new data
    // angular.extend(item, itemCopy); <--- THE RIGHT WAY TO UPDATE
}

但是当我替换'item'内容时,它不会更新视图中的项目。看起来'item'失去了与视图的连接。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您正在创建一个新的对象引用,它将破坏其他引用

使用angular.extend(item, itemCopy);将第二个的属性/值合并到第一个

参考:angular.extend() docs