javascript - AngularJS - 更改 $scope 对象

标签 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。

这正常吗?我完全卡住了

提前致谢

最佳答案

大家好

问题是我用相同的源声明了两个不同的对象。

$scope.finalObject.el.servicesElements = something;

$scope.finalObject.en.servicesElements = something 

我以前没见过,但浏览器的行为就像我输入的一样

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

并且在对方跟随的每一个变化中。

(在php中称为指针)

解决方案是使用angular的复制功能

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

所以我简单地使用了这个 SO 答案 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);

关于javascript - AngularJS - 更改 $scope 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638443/

相关文章:

javascript - FB.api ('/photos' )在 Facebook 应用程序外部工作,但不在应用程序内部工作

python - 重新定义 Python 内置数据类型

javascript - ng-show/hide 延迟图像动画

angularjs - 单击其他选项卡关闭弹出窗口

javascript - 如何使用 Angularjs 重新加载页面?

javascript - Angular : SetData to HighChart widget from an array object

javascript - 如何定义数组中的数据以用javascript显示?

javascript - 使用 jquery 移动 div

javascript - 将数组对象展平为单个对象 - Javascript

javascript - JS : how to convert a string to JS Object (**NOT** to JSON)?