2013-09-05 52 views
2

我有一个很奇怪的问题。

我使用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。

这是正常的吗?我完全陷入

预先感谢您

+1

莫非你创建一个Plunker脚本或什么? –

+0

我建议您查看http://ngmodules.org/modules/angular-translate上的angular-translate模块。此外,您需要为特定问题发布更多代码,这听起来像是您的循环出现问题。 –

回答

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); 
相关问题