0

角度JSのオブジェクトプロパティの変更に関する問題に直面しています。同じデータを使用する複数変数の変数のデータ変更を制限する方法

たとえば、私はオブジェクトの配列を持っています。

$scope.ex1 = [{"name":"Ethel Price","gender":"female","company":"Enersol"}, 
{"name":"Claudine Neal","gender":"female","company":"Sealoud"}, 
{"name":"Beryl Rice","gender":"female","company":"Velity"}, 
{"name":"Wilder Gonzales","gender":"male","company":"Geekko"}, 
{"name":"Georgina Schultz","gender":"female","company":"Suretech"}, 
{"name":"Carroll Buchanan","gender":"male","company":"Ecosys"}, 
{"name":"Valarie Atkinson","gender":"female","company":"Hopeli"}, 
{"name":"Schroeder Mathews","gender":"male","company":"Polarium"}, 
{"name":"Lynda Mendoza","gender":"female","company":"Dogspa"}, 
{"name":"Sarah Massey","gender":"female","company":"Bisba"}] 

私はそれが角-データテーブルを使用しています表示するには、リスト形式でデータを表示するフォームを持っています。

ユーザがリストアイテムをクリックすると、その特定のオブジェクトを配列に格納しています。例えばユーザの は、上記のリストから2つの項目が、私は変化が$scope.ex1オブジェクトに自動的に反映さ$scope.selected、いくつかのプロパティを変更するとき、他の変数に2つのオブジェクトが

$scope.selected = [{"name":"Lynda Mendoza","gender":"female","company":"Dogspa"}, 
{"name":"Sarah Massey","gender":"female","company":"Bisba"}]; 

以下のような問題があることを維持しています選択しました。 のようになります。

$scope.selected[0].name = "Rakesh rekala" 

上記の変更は、その特定の項目に$scope.ex1の配列に反映されます。

このシナリオをどのように制限するかは、これを解決する方法です。

答えて

1

JavaScriptオブジェクトは変数に深いコピーに元のオブジェクト配列をangular.copyを使用し、変更可能であり、その後、あなたはあなたのpushラインを変更する必要があり、選択されたアレイ

+0

JavaScriptのオブジェクトは不変にするどのような方法は、角度のために不変JSまたは任意の他の適切な選択を使用して同じように、そこにあります。 –

0

にオブジェクトをプッシュするために変数を使用します。

$scope.selected.push($scope.ex1[0]); 
$scope.selected[0].name = "Test"; //ex1 will change 

$scope.selected.push(angular.copy($scope.ex1[1])); 
$scope.selected[1].name = "Test2"; //It's ok! 

http://jsfiddle.net/ms403Ly8/124/

+0

それはうまく動作し、@ shintu-josephポイントも、Javascriptオブジェクトが変更可能であるため同じものを参照しています。 –

関連する問題