在ng-repeat中执行函数会产生错误

时间:2017-01-31 11:13:42

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-show

我必须在像这样的ng-repeat中运行一个函数

function winnerScore() {
   if (document.winner == 1) {
       roundsInfo[3].innerHTML =String(parseInt(roundsInfo[3].innerHTML) +1);
   }
   else {
       roundInfo[5].innerHTML = String(parseInt(roundsInfo[5].innerHTML) +1) ;
   }
}

在角度控制器中我有这个功能来控制ng-show:

<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。 问题是,当我进入ng-repeat控制台开始打印的页面时,循环出现此错误:

"\"null\""

并且在我关闭页面之前,cpu的使用率会达到20%到100%。 我该如何解决这个问题? 最好的勋章

编辑: 这是listaService中的数组:

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)

EDIT2: RicercaRuoloService只是一个Angular服务,它调用一个rest服务并从db中获取数据。休息服务效果很好'我也把它用于其他页面,但从来没有作为ng-repeat的功能。

1 个答案:

答案 0 :(得分:0)

尝试一次性绑定。现在你的函数在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;
}