Выполнение функции в ng-repeat дает ошибку
Я должен запустить функцию во время повторения нг, как это
<tr ng-repeat="x in listaService track by $index">
<td>{{x.label}}</td>
<td><span ng-show="showNoRole(x.label)" id="bannerRole">Nessun Ruolo</span> </td>
</tr>
а в угловом контроллере у меня есть эта функция для управления нг-шоу:
$scope.showNoRole = function(label) {
RicercaRuoloService.load(label).then(function(data) {
if (data != "\"null\"") {
return false;
} else {
return true;
}
}, function(error) {
$scope.ErroreConnessione = true;
})
}
функция RicercaRuoloService
возвращает массив или "\"null\""
если массив пуст. Проблема в том, что когда я захожу на страницу, где ng-повтор консольного запуска печатается как зацикливание этой ошибки:
angular.min.js:107 Error: [$rootScope:infdig] http://errors.angularjs.org/1.4.8/$rootScope/infdig?p0=10&p1=%5B%5D
at angular.min.js:6
at r.$digest (angular.min.js:131)
at r.$apply (angular.min.js:134)
at g (angular.min.js:87)
at T (angular.min.js:92)
at XMLHttpRequest.w.onload (angular.min.js:93)
и использование процессора увеличивается с 20% до 100%, пока я не закрою страницу. Как я могу исправить эту проблему? С наилучшими пожеланиями
РЕДАКТИРОВАТЬ: это массив из listaService:
[{"_id":"test","label":"test","descrizione":"descrizione test","url":"http://www.virgilio.it","tipoProfilo":"NGPFNL","periodoValidazione":370,"direct":false,"preValid":false,"deleted":false},{"_id":"test2","label":"test2","descrizione":"descr test2","url":"http://www.google.com","tipoProfilo":"NGPFNL","periodoValidazione":123,"direct":false,"preValid":false,"deleted":false}]
РЕДАКТИРОВАТЬ 2: RicercaRuoloService это просто служба Angular, которая вызывает службу отдыха и принимает данные из базы данных. Служба отдыха работает отлично, потому что я использовал ее и для другой страницы, но никогда как функцию в ng-repeat.
1 ответ
Попробуйте один раз связать. Прямо сейчас ваша функция выполняется в каждом цикле дайджеста angularJS.
ng-show="::showNoRole(x.label)"
Также попробуйте
$scope.showNoRole = function(label) {
var result;
RicercaRuoloService.load(label).then(function(data) {
if (data != "\"null\"") {
result = false;
} else {
result = true;
}
}, function(error) {
result = false;
$scope.ErroreConnessione = true;
})
return result;
}