gpt4 book ai didi

javascript - AngularJS 无法在解析函数中从服务获取身份验证对象

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

我需要在允许页面呈现之前获取一些数据,以便在显示信息之前页面不为空。但我无法让我的决心发挥作用。

问题是 uid 行会抛出错误,因为 states.getAuth() 未定义。从我的 Controller 使用它时,states.getAuth() 应该(并且确实)返回有关用户的身份验证信息,但在此解析中使用它时,由于某种原因,它不会返回。

我的想法完全错误吗?我以前从未做过这样的解决方案,所以我不知道,所以一些指导会很棒。

请告诉我是否必须包含任何服务,或者此路线片段是否足以找出解决方案。

.when('/programs/:program', {
templateUrl: 'views/pages/single-program.html',
resolve: {
'isAuth': ['fbRefs', function(fbRefs) {
return fbRefs.getAuthObj().$requireAuth();
}],
'programData': ['$route', 'fbRefs', 'states', function($route, fbRefs, states) {

// Get our program key from $routeParams
var key = $route.current.params.program;

// Get unique user id
var uid = states.getAuth().uid; // Throws error

// Define our path
var path = uid + '/programs/' + key;

// Fetch the program from Firebase
var program = fbRefs.getSyncedObj(path).$loaded();

return program;
}]
}
})

根据请求添加了states服务代码:

auth.service('states', [function() {

var auth;

return {
getAuth: function() {
return auth;
},
setAuth: function(state) {
auth = state;
}
};
}]);

最佳答案

您正在使用“服务配方”来创建states服务,但返回的结果类似于“工厂配方”。

根据文档: https://docs.angularjs.org/guide/providers#service-recipe

您应该使用这个:

auth.factory('states', [function() {

var auth;

return {
getAuth: function() {
return auth;
},
setAuth: function(state) {
auth = state;
}
};
}]);

或者这个:

auth.service('states', [function() {

var auth;

this.getAuth = function() {
return auth;
};

this.setAuth = function(state) {
auth = state;
};
}]);

关于javascript - AngularJS 无法在解析函数中从服务获取身份验证对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166415/

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