我正在開發一個應用程序使用angularjs,這是我第一次使用角。雖然,我已經開始瞭解它,並開發了應用程序的某些部分,但我被困在一個特定的點。調用ajax響應中的應用程序配置方法 - AngularJS
我想實現登錄功能,所以當頁面加載時,我正在驗證用戶並將他重定向到登錄頁面。成功登錄後,我將某些用戶值存儲在某個配置提供程序中。
現在我正在使用一個API,它具有自己的身份驗證方法,並且他們公開了可用於驗證用戶的ajax方法。
我在下面提供了一個片段。我主要做的是使用外部API,對用戶進行身份驗證,一旦通過身份驗證,我就可以使用API的另一個Ajax方法(稱爲「GetUserDetails」)獲取與該用戶關聯的角色。
而在「GetUserDetails」的響應中,我注入了一個提供程序並設置了一些值,所以我可以在我的應用程序中使用它。
這裏的問題是app.config方法永遠不會被調用/執行。我的意思是ajax請求正在返回響應,並且警報顯示在我的頁面上,但是app.config永遠不會執行。
但是,如果我在GetUser方法的done()中調用相同的app.config,則app.config會執行並將值存儲在我的提供程序中。但我希望GetuserDetails值也可以在我的應用程序執行任何操作之前進行存儲,因爲我想根據用戶執行某些功能。
下面是我在main.js功能文件
function(angular,angularRoute,app,routes,configService){
var $html = angular.element(document.getElementsByTagName('html')[0]);
angular.element().ready(function() {
$.c.authentication.getUser()
.done(function(response){
if(response.userName!="anonymous"){
$.c.ajax({
method: "GetUserDetails",
parameters: {
User: response.user
}
})
.done(function(res) {
alert("I have reached the destination").
app.config(['configServiceProvider', function(configServiceProvider){
configServiceProvider.setLoginStatus(true);
configServiceProvider.setUserName(response.userName);
configServiceProvider.setUserObject(response);
configServiceProvider.setUserRoleDetails(res);
}]);
})
.fail(function(res) {
alert("Error while getting user roles ."+res);
});
angular.resumeBootstrap([app['name']]);
}
else
{
app.config(['configServiceProvider', function(configServiceProvider){
configServiceProvider.setLoginStatus(false);
configServiceProvider.setUserName(response.userName);
}]);
//Show Login Screen
var url = window.location.href.split("#")[0];
window.location.href = url + "#/Login";
angular.resumeBootstrap([app['name']]);
}
})
.fail(function(response){
$rootScope.isLoggedIn=false;
});
});
這裏是我的configServiceProvider
define(['../app'],function(app){
return app.provider('configService', function(){
var options={};
this.setLoginStatus = function(status){
//$rootScope.isLoggedIn = status;
options.isLoggedIn=status;
};
this.setPreLoginInfo=function(info){
options.preLoginInfo=info;
};
this.setUserName=function(name){
options.username=name;
}
this.setUserObject = function(userObject) {
options.userObject = userObject;
}
this.setUserRoleDetails = function(userRoleDetails) {
options.userRoleDetails = userRoleDetails;
}
this.$get=[function(){
if(!options){
}
return options;
}];
});
})
誰能請解釋我是怎麼回事錯在這裏或者我是什麼失蹤 ?
另外,是否有任何替代實現相同的功能?