我觉得这是微不足道的,但我已经被困住了一段时间。
我有一个对象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
。
答案 0 :(得分:1)
即使你做了改变,Angular仍在观看之前的参考文献。
如果您使用:
angular.copy(source, destination)
它将删除所有以前的属性,并用源属性替换它们。
以下是您案例的更新示例:
angular.copy($scope.test, $scope.user)
该陈述应解决问题。