q不退还我发送的

q不退还我发送的

我有一个问题使我失去耐心。我的诺言开始不起作用,我认为这可能对我来说是一个版本问题。我已经编写了几次该代码,它的工作就像一个魅力:

angular.module('blogApp')
  .factory('person', function ($http, $q) {
    var url = 'http://localhost:3000/pessoas';

    return {
      getPeople: function() {
      var d = $q.defer();

      $http.get(url)
        .success(function(data) {
          d.resolve(data);
        });
      return d.promise;
    }
});


我的控制器:

angular.module('blogApp')
 .controller('MainCtrl', function ($scope, person) {
   $scope.people = person.getPeople();
 });


我已经记录了person.getPeople()并显示了未解决的延迟对象。

我错过了什么?
谢谢!

最佳答案

您正在影响对您的people变量的承诺。
它是否已解决不是问题的一部分。
您想要的是影响http调用的结果,而不是诺言。

这里有个例子:

angular.module('blogApp')
  .factory('person', function ($http, $q) {
    var url = 'http://localhost:3000/pessoas';

    return {
      getPeople: function() {
         return $http.get(url);
    }
});

angular.module('blogApp')
 .controller('MainCtrl', function ($scope, person) {
   person.getPeople()
       .then(function(data){
             $scope.people = data;
        }
 });

关于javascript - $ q不退还我发送的 promise ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20307883/

10-09 16:10