2015-04-23 91 views
4

我是AngularJS的新手,嘗試設置一個應用程序,該應用程序讀取RSS提要並在加載頁面時顯示這些項目。AngularJS在加載頁面時加載數據

我已經想出了單擊鏈接時如何加載和顯示數據(請參閱fiddle),但無法弄清楚如何在頁面加載時發生這種情況。

我的想法是我沒有正確使用$scope或應該使用模型。

任何幫助表示讚賞。

代碼:http://jsfiddle.net/mikeyfreake/Lzgts/312/

回答

5

就叫定義方法本身後的方法$scope.loadFeeds()

+0

該死的很容易。在定義方法之前,我正在嘗試呼叫。我認爲,當解析JS文件時,會定義'loadFeeds'方法,但顯然它不是。 –

+0

是的,這將是一個正常的JavaScript執行。 –

4

你還沒有調用你的控制器功能。只需使用此代碼控制器:

var app = angular.module('newsFeed', []); 

    app.controller('FeedController', ['$scope', 'FeedService', function ($scope, Feed) { 

     console.log('FeedController called.'); 

     //These calls cause errors: 
     //$scope.loadFeeds(); 
     //loadFeeds(); 
     //this.loadFeeds(); 
     //loadFeeds(); 

     $scope.loadFeeds = function() { 
      console.log('loadFeeds called.'); 

      Feed.parseFeed('http://www.rotoworld.com/rss/feed.aspx?sport=nfl&ftype=article&count=12&format=atom').then(function (res) { 
       $scope.rotoWorld = res.data.responseData.feed.entries; 
      }); 
     }; 
     $scope.loadFeeds();//you have leave this line pf code 
    }]); 
2

使用ng-init指令控制器被加載後&使更多的影響,同時測試使用噶&茉莉花一個代碼,會調用完全相同。

標記

<div ng-controller="FeedController" ng-init="loadFeeds()"> 
    ..other html here 
<div> 

Fiddle Here


雖然更好的方式是在調用結束,從控制器loadFeeds方法,以確保所有的變量&方法已被初始化。你必須將所有的Ajax響應模擬爲模擬數據。

+0

謝謝。真的很喜歡這個選項。 –

+0

@MichaelFreake你真的會知道它在做代碼測試時有多重要.. –