简体   繁体   English

AngularJS解决依赖项

[英]AngularJS Resolve Dependencies

I am working on an app to allow users to login with different level or access to an application. 我正在开发一个应用程序,以允许用户以不同级别登录或访问应用程序。 I added a resolve dependencies to get the list of users. 我添加了resolve依赖关系以获取用户列表。 It did return a list of correct users. 它确实返回了正确的用户列表。 How do I pass this object to the controller? 如何将此对象传递给控制器​​? I follow a similar example on the website, but my getPrelogin object is always undefined. 我在网站上遵循了类似的示例,但是我的getPrelogin对象始终未定义。 What did I do wrong? 我做错了什么?

.state('registration.login', {
            url: '/Login',
            resolve: {
                preLoginFactory: 'preLoginFactory',
                getPrelogin: function (preLoginFactory) {
                    var result = preLoginFactory();
                    result.then(function (result) {
                        return result.data.Model.IntroMessage;
                    })
                }

            },
            views: {
                "content@": {
                    templateUrl: '/Account/Login',
                    controller: function ($scope, $stateParams, $location, LoginFactory, getPrelogin, preLoginFactory) {
                        console.log('the value of get pre login')
                        console.log(getPrelogin);
                        $scope.introMessage = getPrelogin;
                        $scope.loginForm = {
                            emailAddress: '',
                            password: '',
                            rememberMe: false,
                            returnUrl: $stateParams.returnUrl,
                            loginFailure: false
                        };
                        $scope.login = function () {
                            var result = LoginFactory($scope.loginForm.emailAddress, $scope.loginForm.password, $scope.loginForm.rememberMe);
                            result.then(function (result) {
                                if (result.success) {
                                    if ($location.loginForm.returnUrl !== 'undefined') {
                                        $location.path('/routeOne');
                                    } else {
                                        $location.path($scope.loginForm.returnUrl);
                                    }
                                } else {
                                    $scope.loginForm.loginFailure = true;
                                }
                            });
                        };
                    }//"LoginController"
                }
            }
        })

Your resolve object getPrelogin should return result variable, because promise preLoginFactory factory does return promise object. 您的解决对象getPrelogin应该返回result变量,因为promise preLoginFactory工厂确实会返回promise对象。 By injecting getPrelogin inside controller you would directly get data returned from getPrelogin which is result.data.Model.IntroMessage . 通过将getPrelogin注入控制器中,您将直接获取从getPrelogin返回的数据,即result.data.Model.IntroMessage

Code

resolve: {
  preLoginFactory: 'preLoginFactory',
  getPrelogin: function(preLoginFactory) {
      var result = preLoginFactory();
      return result.then(function(response) {
        return response.data.Model.IntroMessage;
      })
  }
},

You must return your promise: 您必须兑现您的承诺:

getPrelogin: function (preLoginFactory) {
     var result = preLoginFactory();
     return result.then(function (result) {
         return result.data.Model.IntroMessage;
     })
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM