2014-06-30 46 views
0

我的应用程序看起来像一个应该返回对象(从Twitter的API鸣叫)数组的服务:AngularJS:服务不返回变量控制器

.service('twitterService', function($http) { 
    this.getTweets = function(){ 
     $http.get('http://example.com/?json=get_twitter_sidebar').success(
      function(data, status, headers, config) { 
       if (data.status == 'ok') { 
        return data.feed; 
       } else { 
        return 'Error Retrieving Feed' 
       } 
      }); 
    } 

}) 

该服务似乎工作;它调用api并返回所需的对象数组(我使用console.log来验证)。不过,我似乎无法返回数组传递给我的控制器:

var TopPageCtrl = function($scope, $window, $http, twitterService) { 
    $scope.feed = twitterService.getTweets(); 
}; 

当我使用的console.log($ scope.feed),则返回undefined。我已经尝试了一百万种方法,但似乎没有任何工作。我究竟做错了什么?

回答

2

回报的承诺

.service('twitterService', function($http) { 
this.getTweets = function(){ 
    var p = $http.get('http://example.com/?json=get_twitter_sidebar').success(
     function(data, status, headers, config) { 
      if (data.status == 'ok') { 
       return data.feed; 
      } else { 
       return 'Error Retrieving Feed'; 
      } 
     }); 
    return p; 
}}); 


var TopPageCtrl = function($scope, $window, $http, twitterService) { 
twitterService.getTweets().then(function (response) { 
    $scope.feed = response; 
};}; 
1

也许它正在返回一个需要解决的承诺?试着像...

var getFeed = twitterService.getTweets(); 
getFeed.then(function (feed) { 
    $scope.feed = feed; 
}); 
1

$ scope.feed = twitterService.getTweets();

this.getTweets = function(){ 
      $http.get('http://example.com/?json=get_twitter_sidebar').success(
       function(data, status, headers, config) { 
        if (data.status == 'ok') { 
         return data.feed; 
        } else { 
         return 'Error Retrieving Feed' 
        } 
       }); 
     } 

你的函数返回isn't什么,that's为什么你得到 “未定义” .. 试试这个:

this.getTweets = function(){ 
       return $http.get('http://example.com/?json=get_twitter_sidebar').success(
        function(data, status, headers, config) { 
         if (data.status == 'ok') { 
          return data.feed; 
         } else { 
          return 'Error Retrieving Feed' 
         } 
        }); 
      } 

twitterService.getTweets().then(function (response){...}); 
相关问题