我正在开发一个基本的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()}}表达式将被求值。这会产生对使用$ http的函数parseFeed的调用。现在,这就是问题的原因,Angular在通过$ http的ajax请求中所做的最后一件事是调用$ rootScope。$ apply()。这将触发另一个$ digest循环,这将使表达式再次被求值,从而触发另一个$ rootScope。$ apply(),并且您已经可以看到无限循环在这里进行了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句