У меня есть простая функция контроллера, который подсчитывает, сколько ответов есть в каждом вопросе:AngularJS контроллер бесконечных запросы
$scope.countAnswers = function(questionid) {
AnswersQueries.getAnswers(questionid, function(answers) {
var answersCount = answers.length;
return answersCount;
});
};
HTML
<!-- Inside ng-repeat -->
<div>{{countAnswers(question._id)}}</div>
Сервис
angular.module('app')
.factory('AnswersQueries', function ($resource) {
return {
getAnswers: function(questionId, callback) {
// Define resource
var data = $resource('api/answers?questionid=' + questionId);
// Fire the get call
data.query().$promise.then(function(answer){
// Return answer in callback
callback(answer);
});
}
};
});
И когда я попробуйте перезагрузить страницу, она делает TON запросов для подсчета вопросов ... правильных запросов, но никогда не останавливается:
т.е. ...
GET /api/answers?questionid=54ae02aec07933920b000001 200 28ms - 371b
GET /api/answers?questionid=54aec71cdd9a29d210000001 200 28ms - 2b
GET /api/answers?questionid=54aec75bdd9a29d210000002 200 32ms - 2b
GET /api/answers?questionid=54adf9f0e0913a590a000001 200 7ms - 2b
GET /api/answers?questionid=54ae02aec07933920b000001 200 14ms - 371b
GET /api/answers?questionid=54aec71cdd9a29d210000001 200 4ms - 2b
GET /api/answers?questionid=54aec75bdd9a29d210000002 200 4ms - 2b
GET /api/answers?questionid=54aec75bdd9a29d210000002 200 15ms - 2b
GET /api/answers?questionid=54ae02aec07933920b000001 200 18ms - 371b
GET /api/answers?questionid=54aec71cdd9a29d210000001 200 17ms - 2b
GET /api/answers?questionid=54adf9f0e0913a590a000001 200 20ms - 2b
GET /api/answers?questionid=54ae02aec07933920b000001 200 17ms - 371b
GET /api/answers?questionid=54adf9f0e0913a590a000001 200 7ms - 2b
GET /api/answers?questionid=54aec71cdd9a29d210000001 200 9ms - 2b
ошибка консоли (я думаю, что может решить проблему сейчас ... не видел этого раньше, потому что страница была замороженная):
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
Что могло произойти ?
С помощью этой части кода, отображаемого в вопросе, как мы знаем, что на самом деле происходит? Вам не кажется, что вам нужно показывать минимальный код? – PSL
Мне показалось, что я помню, что это было связано с «вопросом» внутри ng-repeat, но я добавлю больше кода, извините. –
Должно ли 'countAnswers()' возвращать некоторое целочисленное значение? Но ваш код показывает, что функция ничего не возвращает. – tamakisquare