我正在开发一个基本的Angular应用程序,它可以读取提要。
在index。html中返回控制器点击这个按钮得到的值
<button ng-click="loadFeed()">Load News</button>
问题是如果我尝试这样做:
{{loadFeed()}}
进入不定式循环。
Controllers.js:
myApp.controller("FeedCtrl", ['$scope','FeedService', function ($scope,Feed) {
$scope.feedSrc = "http://rss.cnn.com/rss/cnn_topstories.rss";
$scope.loadFeed=function(){
Feed.parseFeed($scope.feedSrc).then(function(res){
$scope.feeds=res.data.responseData.feed.entries;
});
}
}]);
myApp.factory('FeedService',['$http',function($http){
return {
parseFeed : function(url){
return $http.jsonp('//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=50&callback=JSON_CALLBACK&q=' + encodeURIComponent(url));
}
}
}]);
我很抱歉,我对AngularJS很陌生。我看到了另一个类似的主题,但我无法解决我的问题。
当第一个$digest循环被触发时,您的{{loadFeed()}}表达式被求值。这将产生对函数parseFeed的调用,该函数使用$http。现在,这是你的问题的原因,Angular通过$http在ajax请求中做的最后一件事是调用$rootScope.$apply()。这会触发另一个$digest循环,使表达式再次求值,从而触发另一个$rootScope.$apply(),您已经可以看到这里正在进行无限循环。