gpt4 book ai didi

javascript - 使用中的属性(property)未更新

转载 作者:行者123 更新时间:2023-12-02 16:34:40 25 4
gpt4 key购买 nike

我的身份验证服务遇到一些问题。我的服务基本上有这个:

angular.factory('authentication', [..., function() {
var currentUser = {};

return {
login: function() {
currentUser = { username: 'Foo' };
},
logout: function() {
currentUser = {};
}
user: currentUser;
}
})]

在我的 AppCtrl 中,我有这个:

 angular.module('App').controller('AppCtrl', [..., function() {
$rootScope.$on('$stateChangeSuccess', function() {
console.log(authentication.user);
});
}]);

在我的 LogoutCtrl 中,我有这个:

 angular.controller('LogoutCtrl', [..., function() {
authentication.logout();
$state.go('login');
}]);

一旦状态更改为login,控制台仍会打印username: 'Foo'

有什么想法吗?

最佳答案

当您在对象中进行第一次分配时,您引用的是用户的引用。然后,在调用 logout() 时替换该引用,以便之前绑定(bind)的旧用户保持不变。将其更改为 getter 函数:

...
getUser: function() {
return user; // always the correct reference
}

现在在 console.log 中调用它,它将起作用

关于javascript - 使用中的属性(property)未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28020440/

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