【问题标题】:Error: 10 $digest() iterations reached. Aborting错误:达到 10 次 $digest() 迭代。中止
【发布时间】:2015-05-07 12:17:37
【问题描述】:

您好,我正在使用 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>

【问题讨论】:

  • 您在 HTML 中的哪个位置使用 getSubTotalgetTotalInvoice
  • 我不确定我是否完全理解您的应用程序应该如何工作。 this 示例是否接近完成您想要的?

标签: angularjs


【解决方案1】:

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

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

【讨论】:

  • 如果总是totalinvoice只返回小计,所以结果是最后一个客户小计
  • 您的控制器中应该有一个 getTotalInvoice 函数来计算总发票。总发票不应是视图中 N 次调用 getSubTotal() 的结果。这两个功能应该是独立的,没有副作用。
  • 我也这么认为,但我有很多表格:收入、支出、利润和余额,是唯一的方法吗?我总是尝试创建最少的函数和变量
  • 您还可以在加载数据时一劳永逸地计算总数,并将其存储在变量中。
猜你喜欢
  • 2015-05-30
  • 2013-11-10
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 2014-03-20
  • 1970-01-01
相关资源
最近更新 更多