gpt4 book ai didi

javascript - AngularJS - 提供者状态丢失,或者它不是单例?

转载 作者:行者123 更新时间:2023-12-03 03:56:15 24 4
gpt4 key购买 nike

bootstrap.js

angular.element(document).ready(function() {
var auth = angular.injector(['auth', 'ngStorage', 'ng']).get('auth');
auth.user().then(function(user){
if (user && user.id) {
angular.bootstrap(document, ['app']);
}
});
});

auth.js

module.provider('auth', [function(){
this.$get = ['$http', '$localStorage', function($http, $storage){
return {
_user: null,

user: function(){
var self = this;

return $http.get('/auth/user').then(function(response){
self._user = response.data;
console.log(self._user); // <- has the user object
return self._user;
});
},
}
}]
}]);

app.js

module.run(function(auth, $state){
console.log(auth._user); // <- is null
});

在我的应用程序中,当我注入(inject) auth 服务时,状态似乎丢失了 - 或者,注入(inject)的 auth 是一个新实例(不是单例)。

谁能解释一下为什么吗?

最佳答案

服务、工厂和提供商之间的差异:https://stackoverflow.com/a/15666049/1735789

提供商

语法: module.provider( 'providerName', function );结果:当将providerName声明为可注入(inject)参数时,将为您提供(new ProviderFunction()).$get()。构造函数在调用 $get 方法之前实例化 - ProviderFunction 是传递给 module.provider 的函数引用。

关于javascript - AngularJS - 提供者状态丢失,或者它不是单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44932712/

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