Angular 2承诺?

时间:2015-12-27 05:01:19

标签: javascript angularjs node.js angular

我正在使用angular-fullstack创建一个应用程序。在我的应用程序中,我使用Yelp API获取搜索结果,我想将其存储在变量中(注意:this.searchTerm通过HTML中的ng-model更改):

'use strict';

(function() {

class MainController {

  constructor($http) {
    this.$http = $http;
    this.awesomeThings = [];
    this.searchTerm = "";
    this.data = [];
  }

  addThing() {
    this.$http.get('/api/messages/city/' + this.searchTerm).success(function(res){
      this.data = res;
    });
  };
}

angular.module('nightlifeApp').controller('MainController', MainController);})();

当我这样做时,我收到一个错误,即没有定义this.data。我知道这是针对异步调用的本质,但我该如何解决这个问题呢?

由于

1 个答案:

答案 0 :(得分:0)

this关键字在严格模式下的.then函数中未定义。设置局部变量以引用this函数内的then绑定。

'use strict';

(function() {

class MainController {

  constructor($http) {
    this.$http = $http;
    this.awesomeThings = [];
    this.searchTerm = "";
    this.data = [];
  }

  addThing() {
    var self = this;
    this.$http.get('/api/messages/city/' + this.searchTerm).then (function(res){
      self.data = res.data;
    });
  };
}

angular.module('nightlifeApp').controller('MainController', MainController);})();

.success方法已弃用。请改用.then