Javascript Don';t在AngularJS函数中通过引用传递对象
我有一个Javascript Don';t在AngularJS函数中通过引用传递对象,javascript,angularjs,Javascript,Angularjs,我有一个ng repeat,它重复一个无序列表。该列表中的每个项都有一个按钮,用于调用AngularJS函数将该项添加到另一个列表中。问题是传递给函数的项是通过引用传递的。也就是说,如果我在该函数中更新了一个属性,那么该对象在我的站点中的任何地方都会被更新 我的问题的例子: 您将看到左侧列表也已更新。但我只想更新传递给函数的对象!所以,我只想看到第二个列表中的更改 如何解决这个问题?在JavaScript中,所有内容都是按值传递的。您只是在修改引用所指向的对象 您可以使用angular.cop
ng repeat
,它重复一个无序列表。该列表中的每个项都有一个按钮,用于调用AngularJS函数将该项添加到另一个列表中。问题是传递给函数的项是通过引用传递的。也就是说,如果我在该函数中更新了一个属性,那么该对象在我的站点中的任何地方都会被更新
我的问题的例子:
您将看到左侧列表也已更新。但我只想更新传递给函数的对象!所以,我只想看到第二个列表中的更改
如何解决这个问题?在JavaScript中,所有内容都是按值传递的。您只是在修改引用所指向的对象 您可以使用
angular.copy
创建一个新对象,并复制顶级引用
我补充说
obj = angular.copy(obj);
本机方法(仅复制对象和子函数)
野蛮方法(无函数,非循环)
角度法
var newObject = angular.copy(obj);
// or
angular.copy(obj, newObject);
Jquery方法
// Shallow copy
var newObject = jQuery.extend({}, obj);
// Deep copy
var newObject = jQuery.extend(true, {}, obj);
下划线方法
// Shallow
var newObject = _.clone(obj);
洛达斯法
// Deep
var newObject = _.clone(obj, true);
// Shallow
var newObject = _.clone(obj);
// Deep
var newObject = _.clone(obj, true);