2

私は非常に奇妙な問題を抱えています。

$scope の下にオブジェクトがあります

angular.foreach ループを使用していますが、問題があります。

langKey (langKey は「en」または「el」) に応じて値を設定しようとすると、すべての値が langKey を無視して更新されます。

$scope.finalObject[langKey]['servicesElements'][itemKey]['name']  = something;

そこから値を変更するためにコンソールを使用するだけでも問題は解決しません。

オブジェクトのelバージョンに値「myCustomText」を設定しています

$scope.finalObject.el['servicesElements'][itemKey]['name'] = 'myCustomText'

しかし、これを実行すると

$scope.finalObject.en['servicesElements'][itemKey]['name']

私が変更したのはenではなくelバージョンだったので、理由もなく「myCustomText」を返します。

これは正常ですか?私は完全に立ち往生しています

前もって感謝します

4

1 に答える 1

1

皆さん、

問題は、2 つの異なるオブジェクトを同じソースで宣言したことです。

$scope.finalObject.el.servicesElements = something;

$scope.finalObject.en.servicesElements = something 

以前は見たことがありませんでしたが、ブラウザは入力したように動作していました

$scope.finalObject.en.servicesElements = $scope.finalObject.el.servicesElements = something

そして、一方が変化するたびに、他方が追従していました。

(PHPではポインタと呼ばれます)

解決策は、角度のコピー機能を使用することでした

http://docs.angularjs.org/api/angular.copy

だから私は単にこのSOの答えを使用しました

$scope.tmpVar = something;
$scope.finalObject.en.servicesElements = angular.copy($scope.tmpVar);
$scope.finalObject.el.servicesElements = angular.copy($scope.tmpVar);
于 2013-09-05T17:37:42.300 に答える