2

我有一个非常奇怪的问题。

我在 $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。

这是正常的吗?我完全被困住了

先感谢您

4

1 回答 1

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

所以我只是简单地使用了这个 SO answer 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);
于 2013-09-05T17:37:42.300 回答