用Angular表达式绑定Ajax调用的无限循环
Infinite loop with Angular expression binding with Ajax call
我正在开发一个基本的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(),您已经可以看到这里正在进行无限循环。
相关文章:
- 如何在Javascript函数调用中循环变量
- 使用滚动溢出-x进行无限循环
- jQuery延迟了ajax调用的循环
- 从index.html调用函数,该函数无限循环
- 使用jQuery无限循环播放HTML页面幻灯片
- Grunt任务没有加载,获得无限循环
- MeteorJS使用流星调用和流星方法时的无限循环
- AngularJS内部的调用函数进入无限循环
- 在 Jquery 或 Javascript 中调用方法的无限循环的正确方法是什么?
- ng-禁用函数调用在 ng-repeat 下处于无限循环中
- 在UI路由器中调用子状态时触发了无限循环
- document.ready用angular.js以无限循环调用
- 为什么我的Angular函数在无限循环中被调用?
- Angular JS的http拦截器async调用无限循环
- 是否有一种方法来确定ajax调用是否在无限循环中执行
- 为什么为同一函数调用window.setTimeout不会引入无限循环
- 在ajaxOncomplete之后触发ajax调用会导致无限循环
- 在回调函数中调用 onSubmit 会导致无限循环
- 用Angular表达式绑定Ajax调用的无限循环
- 调用$watchCollection时的angular$digest无限循环