gpt4 book ai didi

javascript - AngularJS:更改对象不会更新字段,但直接更改字符串会更新

转载 作者:行者123 更新时间:2023-12-03 11:03:55 25 4
gpt4 key购买 nike

我觉得这是一件微不足道的事情,但我已经被困了一段时间了。

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

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

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}} 字段会更新。

我承认我是一个 Angular 菜鸟(尽管这可能是一个 JavaScript 概念),但是我遇到的逻辑对我来说没有意义,如果有人能为我解决这个问题,我将非常感激,甚至可能会插入我朝着正确的方向前进,以正确更新 user 对象以等于 test 对象。 test 最终将是用户设置表单的一个实例,只有数据保存成功后,该实例才会被保存为 user

最佳答案

即使在您进行更改之后,Angular 仍在查看之前的引用。

如果您使用:

angular.copy(source, destination)

它将删除所有以前的属性并用源属性替换它们。

以下是您的案例的更新示例:

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

该声明应该可以解决问题。

关于javascript - AngularJS:更改对象不会更新字段,但直接更改字符串会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27951899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com