我有一个非常奇怪的问题。
我在 $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/