2017-10-25 7 views
1

angularjsでCRUDを作成したところ、vm.userlistData2の値を変更すると、表示されていたvm.userlistDataも変更される理由がわかりません。anglejsでのバインディングの仕組みにちょうど混乱しています

ここ

は私がuserlistDataとuserlistData2が同じオブジェクト参照を共有するためですサービス

dataservice.getUserProfile(vm.userId).then(function (data) { 
    vm.userlistData = data; 
    vm.userlistData2 = data; 
}); 
+2

両方とも同じ 'data'オブジェクトへの参照に過ぎないためです。 – deceze

答えて

4

を使用してデータを取得する方法です。もしuserlistData2ための新しいオブジェクト参照作成することによって、これを回避するためにobject.assign使用することができます。あなたはangular.copy

vm.userlistData = data; 
vm.userlistData2 = Object.assign({}, data); 

事前のデータ構造とJSヒントをお勧めし 使用法: angular.copy(ソース、[宛先]) ;

例: angular.copy(data、vm.userlistData); angular.copy(data、vm.userlistData2);

  • は、メモリ管理を自動化するので、新しい参照の作成を心配する必要はありません。
+0

ありがとう素晴らしい説明。その作業は今すぐ後で答えを受け入れるでしょう。 – Priz

+0

あなたは大歓迎です! – Faly

+3

'angular.copy(data)'も試してください –

関連する問題