2015-11-13 20 views
1

我正在嘗試使用可以分配給作用域角度變量的工廠。然而,每當我試圖附加這個並使用console.log來返回這個變量,我是作爲文本返回與函數,而不是一個值。有沒有一種方法可以解決這個問題?如何將函數返回到作用域變量?

========== ========== JS

annApp.factory('rssFeed', function() 
    { 
    return function() 
    { 
     var events = []; 
     $.get('xmlfile', 
     function(xml) 
    { 
    var json = $.xml2json(xml); 
    jsonb = JSON.stringify(json, undefined, 3); 
    // var events = []; 
     var description = json['#document']['rss']['channel']['item']['description']; 
     var title = json['#document']['rss']['channel']['item']['title']; 
     var date = json['#document']['rss']['channel']['item']['pubDate']; 
     events.push({'title': title, 'description':description, 'date': date}); 
     return events; 
    }); 
    return events; 
} 

annApp.controller('calendar', ['$scope', 'rssFeed', function($scope, rssFeed){ 
    $scope.events = rssFeed; 
    console.log($scope.events); 
}]); 
+0

你只是想調用rssFeed工廠並將其登錄到控制檯?在這種情況下,你需要調用函數'console.log($ scope.events());'同樣,我相信'return events;'後面的行應該是'};});' – DenimChicken

+0

這是一個正確的小提琴返回函數:http://jsfiddle.net/HB7LU/19871/ – DenimChicken

回答

1

如果你想打印出來的參考函數本身,那麼你已經是(比DenimChicken提到的語法錯誤等)正確:

annApp.factory('rssFeed', function(){ 
    return function(){ 
     var events = []; 
     $.get('xmlfile', function(xml){ 
      var json = $.xml2json(xml); 
      jsonb = JSON.stringify(json, undefined, 3); 
      var description = json['#document']['rss']['channel']['item']['description']; 
      var title = json['#document']['rss']['channel']['item']['title']; 
      var date = json['#document']['rss']['channel']['item']['pubDate']; 
      events.push({'title': title, 'description':description, 'date': date}); 
     }); 
     return events; 
    }; 
}); // <-- added this 

如果你想從功能打印出返回值,那麼你需要通過把括號後調用的函數名稱:

console.log($scope.events()); 

但是,由於$.get是異步的,您應該傳入回調並在請求完成時調用它,或者使用promise。

+0

我能夠得到回調函數正常使用另一個stackoverflow問題在這裏找到http://stackoverflow.com/questions/20369377/how-to-使用-HTTP-GET功能於angularjs-正確,在特定換的,外部API-CAL。 –

+0

能夠創建回調後,我無法在頁面上顯示對象數據,但是,我可以將對象返回到控制檯窗口。想法? –

+0

不能說沒有看到你的代碼。如果你把它放在jsfiddle中,發佈鏈接,我會看看。 –