繁体   English   中英

AngularJS:更改对象不会更新字段,但是直接更改字符串可以

AngularJS: Changing object does not update field but changing string directly does

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我觉得这很琐碎,但是我已经坚持了一段时间。

我有一个对象user ,在指令UserSettings中设置。 指令的元素包含带有html {{user.name}}的按钮,用于打开用于用户设置的模型。 页面加载时设置了user.name

模态中的用户设置表单包含在名为UserSettingsForm的控制器中。 我一直在尝试调试控制器,但我对所看到的行为感到困惑。

console.log @$scope.user # debug to show user object is there
@$scope.test = angular.copy(@$scope.user) # set test equal to a copy of user
@$scope.test.name = 'wowee' # change test object's 'name' property
@$scope.user = angular.copy(@$scope.test) # set user back to test
console.log @$scope.test # test is changed
console.log @$scope.user # user is equivalent to test

上面的调试工作按预期进行,但是意外的部分(至少对我来说)是导航栏中的{{user.name}}未得到更新的事实。 但是,当我执行@$scope.user.name = @$scope.test.name时,HTML中的{{user.name}}字段将更新。

我确实是一个有角的菜鸟(即使这可能是一个JavaScript概念),但是我遇到的逻辑对我来说没有意义,如果有人可以为我清除它,我将不胜感激,也许甚至在正确方向上推动我,以正确地更新user对象以使其等于test对象。 test最终将成为用户设置表单的一个实例,只有成功保存数据后,该实例才会保存为user

1 个回复

即使您进行更改,Angular仍在监视先前的参考。

如果您使用:

angular.copy(source, destination)

它将删除所有先前的属性,并将其替换为源属性。

这是您的案例的更新示例:

angular.copy($scope.test, $scope.user)

该声明应解决该问题。

3 更改$ scope变量后,Angularjs ng-repeat不会更新

嗨,我是Angularjs的新手。 我正在更改下拉列表选择中的$ scope变量。 范围变量用于div上的ng-repeat。 HTML代码: angularjs代码: 在更改下拉列表时,此filtermodelbyId()函数会调用并且我正在推送新值,但这会在下拉列表 ...

5 View不会随着viewModel的更改而更新

我有一个名为用户控件SensorControl ,我想它的DataContext绑定到一个名为ViewModel类SensorModel 。 绑定成功,viewModel的初始值在userControl中可见,但问题是当我更改 viewModel的属性时, userControl不会更新 ,我 ...

6 更改 MeshRenderer 材质数组不会更新游戏对象

我试图在运行时向网格渲染器添加材质,但是新材质没有出现在游戏中。 调试日志显示材质确实被添加到objRender.materials数组中,但在场景中没有任何变化。 我也尝试过使用sharedMaterials ,但没有运气。 ...

2021-06-03 01:07:05 1 20   unity3d
7 手动更改URL不会在AngularJS中调用控制器

我有一个主页为app.html的应用程序,我的控制器是app.js。 以下是app.js中的代码: 因此,当我运行此网站时,将调用控制器,并根据角色的值显示相应的仪表板。当网站运行时,它会命中http:// localhost:9080 /#/ ,后者正在调用上述控制器并也重定向了ht ...

8 AngularJs更改$ location.path不起作用

我意识到这个问题以前已经提出过。 但是似乎没有答案可以解决这个问题。 我对Angular有一定的了解,并且已经生成了大量的Angular代码,但我不是一个完整的初学者。 我已经开始开发MEAN应用,因此所有客户端都是Angular。 在将我的头撞在墙上两天之后,我无法获得一个非常 ...

10 将字符串保存到重载的括号中不会更改对象的字段

我的代码有问题,我无法理解。 我想制作一个列表列表,并像二维关联数组一样使用它。 像这样: 第二行效果很好。 从文件中读取数据。 问题出在第一条指令上。 这就是我如何使第二个方括号过载的原因: 如您所见,我返回了TokenPair类的对象。 为了正确地从对象( ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM