这个问题有类似的预先存在的问题,但由于ES6课程的性质,我发现它们并不相同。
我有一个返回对象的服务,但它将它作为promise状态对象而不是普通对象返回,因此无法访问数据。
下面我将展示如何调用函数,并从promise和函数返回,但返回函数返回$ q promise而不是内部返回的数据。
class EnterpriseController {
/*@ngInject*/
constructor(EnterpriseService, $scope) {
this.name = 'enterprise';
this.systemId = 20003
this.pageLink = '#/enterprise';
this.$scope = $scope;
this.EnterpriseService = EnterpriseService;
this.$scope.data = this.getEnterpriseData();
}
getEnterpriseData() {
this.EnterpriseService.getData().then(function(response) {
return response.data;
});
}
}
EnterpriseController.$inject = ["EnterpriseService", "$scope"];
export default EnterpriseController;
返回:
可以访问$$州级以下的任何内容。 $$state.value
返回undefined。
最终,我希望在构造函数中访问返回的数据,但我只能访问似乎是$ q的承诺。
答案 0 :(得分:1)
这是你需要解决的承诺。您正在从getEnterpriseData()方法返回一个承诺
这
constructor(EnterpriseService, $scope) {
this.name = 'enterprise';
this.systemId = 20003
this.pageLink = '#/enterprise';
this.$scope = $scope;
this.EnterpriseService = EnterpriseService;
this.$scope.data = this.getEnterpriseData();
}
getEnterpriseData() {
return this.EnterpriseService.getData().then(function(response) {
return response.data;
});
}
要
constructor(EnterpriseService, $scope) {
this.name = 'enterprise';
this.systemId = 20003
this.pageLink = '#/enterprise';
this.$scope = $scope;
this.EnterpriseService = EnterpriseService;
this.getEnterpriseData().then(function(data){
this.$scope.data = data;
console.log(this.$scope.data)
});
}
getEnterpriseData() {
return this.EnterpriseService.getData().then(function(response) {
return response.data;
});
}
答案 1 :(得分:0)