2015-04-23 53 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你真的会知道它在做代码测试时有多重要.. –