Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ajax响应-AngularJS中调用app config方法_Javascript_Angularjs - Fatal编程技术网

Javascript 在ajax响应-AngularJS中调用app config方法

Javascript 在ajax响应-AngularJS中调用app config方法,javascript,angularjs,Javascript,Angularjs,我正在使用angularjs开发一个应用程序,这是我第一次使用angularjs。虽然,我已经开始理解它,并开发了应用程序的某些部分,但我仍停留在一个特定的点上 我正在尝试实现登录功能,所以当页面加载时,我正在验证用户并将其重定向到登录页面。成功登录后,我将用户的一些值存储在一个配置提供程序中 现在我正在使用一个API,它有自己的身份验证方法,他们已经公开了ajax方法,我可以用它来验证用户 我在下面提供了一个片段。我主要做的是使用外部API,对用户进行身份验证,一旦进行了身份验证,我将使用AP

我正在使用angularjs开发一个应用程序,这是我第一次使用angularjs。虽然,我已经开始理解它,并开发了应用程序的某些部分,但我仍停留在一个特定的点上

我正在尝试实现登录功能,所以当页面加载时,我正在验证用户并将其重定向到登录页面。成功登录后,我将用户的一些值存储在一个配置提供程序中

现在我正在使用一个API,它有自己的身份验证方法,他们已经公开了ajax方法,我可以用它来验证用户

我在下面提供了一个片段。我主要做的是使用外部API,对用户进行身份验证,一旦进行了身份验证,我将使用API的另一个ajax方法(称为GetUserDetails)获取与该用户关联的角色

在GetUserDetails的响应中,我注入了一个提供者并设置了一些值,因此我可以在我的应用程序中使用它

这里的问题是app.config方法从未被调用/执行。我的意思是ajax请求正在返回响应,警报显示在我的页面上,但app.config永远不会执行

但是相同的app.config如果我在GetUser方法的done内调用,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;
    }];
});
}

谁能告诉我这里出了什么问题或者我遗漏了什么


此外,是否有其他方法可以实现相同的功能?

很难找到上述方案不起作用的原因。因为我已经花了很多时间在这方面,所以我找到了一种解决方法,可以在使用服务时实现同样的效果