【发布时间】:2018-02-01 15:12:34
【问题描述】:
注意:此问题与UI-Router and resolve, unknown provider in controller 类似,但不同之处在于它专门处理 AngularJS 1.5+ 和基于组件的应用程序,这些应用程序改变了状态解析的配置方式。
所以我试图在子状态下解析一些数据。我之前为之前的解决方案做过此操作,但在第二个解决方案中遇到了问题。
这是我的设置:
应用状态
我有一个父状态“app”和一个子状态“home”。当用户登录时,他们会经历完成解析的“app”状态,然后他们会被重定向到“home”状态。
angular
.module('common')
.component('app', {
templateUrl: './app.html',
controller: 'AppController',
bindings: {
member: '=',
}
})
.config(function ($stateProvider) {
$stateProvider
.state('app', {
redirectTo: 'home',
url: '/app',
data: {
requiredAuth: true
},
resolve: {
member: ['AuthService',
function (AuthService) {
return AuthService.identifyMember()
.then(function (res) {
AuthService.setAuthentication(true);
return res.data;
})
.catch(function () {
return null;
});
}
],
organization: ['AuthService',
function (AuthService) {
return AuthService.identifyOrganization()
.then(function (res) {
return res.data;
})
.catch(function () {
return null;
});
}
],
authenticated: function ($state, member) {
if (!member)
$state.go('auth.login');
}
},
component: 'app',
});
});
家乡
angular
.module('components')
.component('home', {
templateUrl: './home.html',
controller: 'HomeController',
bindings: {
member: '=',
}
})
.config(function ($stateProvider) {
$stateProvider
.state('home', {
parent: 'app',
url: '/home',
data: {
requiredAuth: true
},
component: 'home',
resolve: {
'title' : ['$rootScope',
function ($rootScope) {
$rootScope.title = "Home";
}
],
}
});
});
当我尝试控制台时,在我的控制器中记录应该存在的输出:
function HomeController(AuthService, $state) {
let ctrl = this;
console.log(ctrl.organization);
}
但是,我得到undefined。
我在 AuthService 中的方法被调用的方式与 member 解决方法相同,所以我不确定问题出在哪里。
【问题讨论】:
标签: angularjs angular-ui-router