我有一个非常奇怪的问题。
我在$ scope
下有一个对象我使用了angular.foreach循环,但是存在问题。
当我尝试根据langKey(其中langKey为'en'或'el')设置值时,所有值都是通过插入langKey来更新的。
$scope.finalObject[langKey]['servicesElements'][itemKey]['name'] = something;
当我只是使用控制台来改变那里的值时,问题仍然存在。
我将值'myCustomText'设置为对象的el版本
$scope.finalObject.el['servicesElements'][itemKey]['name'] = 'myCustomText'
但如果我运行这个
$scope.finalObject.en['servicesElements'][itemKey]['name']
它没有任何理由返回'myCustomText',因为我更改的是el版本而不是en。
这是正常的吗?我完全被困了
提前谢谢
答案 0 :(得分:1)
好人,
问题在于我已经使用相同的来源声明了两个不同的对象。
$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
所以我只是使用了这个答案Reset a model with angular.js做了这个
$scope.tmpVar = something;
$scope.finalObject.en.servicesElements = angular.copy($scope.tmpVar);
$scope.finalObject.el.servicesElements = angular.copy($scope.tmpVar);