2014-06-30 48 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){...}); 
相關問題