错误:达到$ $ digest()迭代。中止

时间:2015-03-05 23:04:25

标签: angularjs

你好我使用angularjs所以我有一个branch->client->invoice->details_invoice的数组,现在发票有每个发票的总额,我为每个客户的总和发票的功能。

var TotalInvoice=0;
$scope.getSubTotal=function(indexClient,indexBranch){

            var ret="0";
            if($scope.data!=null){
                var invoice=$scope.data[0].branch[indexBranch].client[indexClient].invoice;
                if(invoice!=null){

                    for(var $i=0;$i<invoice.length;$i++){
                        if(invoice[$i].state=="3"){
                            ret=boletas[$i].amount;                             
                            TotalInvoice+=parseFloat(boletas[$i].amount);

                            }                       
                        }

                    }
            }

             return (parseInt(ret)).toFixed(2);
             }; 

总计

   $scope.getTotalInvoice=function(){
    return (parseInt(TotalInvoice)).toFixed(2);
    };

但我有这个错误

    Error: 10 $digest() iterations reached. Aborting!
    Watchers fired in the last 5 iterations:

 [[.....

如果我删除行TotalInvoice+=parseFloat(boletas[$i].amount);错误消失,请帮助我

更新添加HTML

<div ng-repeat="branch in company.branch| filter: { id_branch:id_b}"  >
   <tr  ng-repeat="client in branch.client.slice(page.ini,page.fin) >
 <td>{{getSubTotal(company.branch.indexOf(branch ),branch.client.indexOf(client))}}</td>
  </tr>
<tr> {{getTotalInvoice()}}</tr>
</div>

1 个答案:

答案 0 :(得分:4)

每次调用getSubTotal()函数时,它都会增加TotalInvoice的值。由于TotalInvoice也会显示在用户界面中,因此会对其进行监视,并且其更改会导致getSubTotal()再次被调用,从而增加TotalInvoice等等。

每次调用TotalInvoice时,

getSubTotal()应该设置为0。或者更好的是,getSubTotal()根本不应该设置TotalInvoice。那不是它的工作。