2016-09-20 6 views
0

model.dataオブジェクトがあり、そのオブジェクトをdatacopyにコピーして、その新しいオブジェクト(datacopy)にいくつかの変更を加えたいとします。しかし、datacopyを変更すると、変更はmodel.dataにも適用されます。それをやめる方法は?angular.copy()はモデルへの参照を中断しません

function updateClone (_object) { 
    var datacopy = angular.copy(model.data); 
    var index = _.findIndex(datacopy, function (obj) { 
          return obj.id === _object.id; 
         }); 

    datacopy.splice(index, 1, _object); 
    } 
+1

あなたは 'model'の内容を共有してもらえますか? –

答えて

1

私は質問にはコメントできません。

Angular.copy()は問題ありません。

この変形を試すことができます:コピーオブジェクトは機能外にあり、パラメータとして送信してください。

function updateClone (datacopy, _object) 
{ 
    var index = _.findIndex(datacopy, function (obj) { 
           return obj.id === _object.id; 
          }); 

    datacopy.splice(index, 1, _object); 
} 
1

確かにangular.copyは問題なく動作しています。

私が考えていることは、モデルが他のオブジェクトへの参照を格納しているということです。あなたangular.copy(model.data)データは、ネストされた参照でコピーされた場合:http://jsfiddle.net/pxcf2dqw/2/

var toy = { 
    price: 50 
} 

var model = { 
    data: toy 
} 

var datacopy = angular.copy(model.data); 
datacopy.price = 50 

console.log(datacopy.price) 
console.log(model.data.price) 
関連する問題