类函数返回promise $$状态对象而不是普通对象?

时间:2016-08-04 18:11:50

标签: angularjs ecmascript-6 angular-promise

这个问题有类似的预先存在的问题,但由于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;

返回:

enter image description here

可以访问$$州级以下的任何内容。 $$state.value返回undefined。

最终,我希望在构造函数中访问返回的数据,但我只能访问似乎是$ q的承诺。

2 个答案:

答案 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)

解决方案!

我只需要在初始类上下文中捕获$ scope,因此第13行解决了问题:

enter image description here