AngularJS - 更改$ scope对象

时间:2013-09-05 14:01:46

标签: javascript object angularjs angularjs-scope

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

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

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

提前谢谢

1 个答案:

答案 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);