【发布时间】:2017-07-12 17:13:57
【问题描述】:
我在使用组件和 ui-router 的解析时遇到了这个问题,解析承诺“之后”的数据在控制器中是“未定义的”
服务:
class userService {
constructor ($http, ConfigService, authService) {
this.$http = $http;
this.API_URL = `${ConfigService.apiBase}`;
this.authService = authService;
}
testAuth () {
return this.$http.get(this.API_URL + '/test-auth')
}
getCollaboratores () {
return this.$http.get(this.API_URL + '/collaboratores').then(
(resolve) => { // promise resolve
console.log('Success',resolve.data);
}
)
}
getAccount () {
var config = {
headers: { "X-Shark-CollaboratoreId" : "1"}
};
return this.$http.get(this.API_URL + '/accounts' + '/' + 1, config).then(
(resolve) => { // promise resolve
console.log('Success',resolve.data);
}
)
}
模块/组件/路由:
.config(($stateProvider, $urlRouterProvider) => {
"ngInject";
$urlRouterProvider.otherwise('/');
$stateProvider
.state('core', {
redirectTo: 'dashboard',
url: '/core',
component: 'core',
resolve: {
userdata: (userService) => {
return userService.getCollaboratores();
},
accdata: (userService) => {
return userService.getAccount();
}
}
});
})
控制器:
let self;
class CoreController {
constructor($state,userService,authService,userdata,accdata) {
this.name = 'core';
this.$state = $state;
this.userService = userService;
this.authService = authService;
this.userdata = userdata;
this.accdata = accdata;
console.log('name',this.name);
self = this;
console.log('userdata',self);
}
}
CoreController.$inject = ['$state','userService', 'authService','userdata','accdata'];
export default CoreController;
在控制器中注入对象后,在“http”调用后被promise“解析”
this.userdata = userdata;
this.accdata = accdata;
未定义!!!
错误在哪里。??
非常感谢...
【问题讨论】:
-
console.log('Success',resolve.data);的输出是什么? -
输出正确:成功对象 {data: Array[1]}.... 没有 RESOLVE 所有代码都可以正常工作,我尝试在 promise resolve 后使用 resolve 渲染视图。
标签: javascript angularjs angular-promise