state.resolve在控制器

时间:2017-12-08 18:20:30

标签: angularjs angular-ui-router

我的状态定义如此

.state('login', {
    url: '/login',
    controller: 'LoginController',
    templateUrl: 'templates/login.tpl.html',
    data: {
      loginState: true
    },
    resolve: {
      saml_auth: function ($cookies) {
        var saml_auth = $cookies.get('saml_auth');
        console.log(saml_auth) // returns the string value
        return {claim: saml_auth};
      }
    }

在控制器中,我得到一个空对象,即使在对象中也没有属性

angular.module('swSelfService')
  .controller('LoginController', LoginController);

LoginController.$inject = [
  '$scope', 
  'SWSessionService', 
  '$state', 
  '$stateParams', 
  'saml_auth',
];

function LoginController($scope, SWSessionService, $state, saml_auth) {
    console.log(saml_auth) // {}
}

1 个答案:

答案 0 :(得分:0)

您错过了添加$stateParams注射的第4个参数。您将saml_auth放在控制器构造函数中的错误位置,它应该出现在第5位。

LoginController.$inject = [
  '$scope', 
  'SWSessionService', 
  '$state', 
  '$stateParams', 
  'saml_auth',
];

function LoginController($scope, SWSessionService, $state, $stateParams, saml_auth) {
    console.log(saml_auth) // {}
}