Angular - 在服务$ http调用后设置控制器变量

时间:2015-12-11 01:34:38

标签: angularjs callback promise

我发现很难弄清楚所有不同的博客和例子如何正确地使用角度的承诺,所以请欣赏一些人的澄清。

是否使用传入服务get方法的回调来设置控制器变量,如此错误?

会话服务中:

self.getSessions = function(callback) {

  $http.get(self.urls.sessionsList).then(
    function (response) {
      callback(response.data);
    },
    function (response) {
      // failure
    }
  );

};
来自这个控制器的

.controller('SessionsController', ['Session', function(Session) {
  var self = this;

  self.sessions = [];

  Session.getSessions(function(data) {
    self.sessions = data;
  });
}])

2 个答案:

答案 0 :(得分:2)

  
    

问)是否使用传入服务get方法的回调来设置控制器>>这样的变量错误?。

  

不,这没有错,但是您可以使用承诺的力量并将您的代码更改为类似下面的内容,您可以链接到"然后"方法:

self.getSessions = function() {

       return $http.get(self.urls.sessionsList);
}

并将您的控制器代码更改为:

.controller('SessionsController', ['Session', function(Session) {
  var self = this;

  self.sessions = [];

  Session.getSessions().then(function(response) {
    self.sessions = response.data;
  });
}]);

然后,您可以看到来电者可以链接到"然后"并且做了越来越多的功能......

希望有所帮助。

答案 1 :(得分:0)

使用Deffered promise是坏事,因为es6 promise已发布