【问题标题】:AngularJS - Change the $scope objectAngularJS - 更改 $scope 对象
【发布时间】:2013-09-05 14:01:45
【问题描述】:

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

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

这正常吗?我完全被卡住了

提前谢谢你

【问题讨论】:

  • 你能创建一个 Plunker 脚本之类的吗?
  • 我建议您在ngmodules.org/modules/angular-translate 上查看角度翻译模块。此外,您需要针对您的特定问题发布更多代码,听起来您的循环某处存在问题。

标签: javascript object angularjs angularjs-scope


【解决方案1】:

伙计们,

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

$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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    相关资源
    最近更新 更多