递归ng包括引起错误:$ rootscope:infdig infinite $摘要循环



我有一个递归的ng include,导致错误:$ rototscope:iffdig infinite $ digest loop

在我的ctrl中:

function getTemplate(elementType) {
        console.log(elementType + '_formElement.html');
        return elementType + '_formElement.html';
    };

在我的视图中:

<div ng-repeat="element in elementList track by $index" ng-init="templateID=vm.getTemplate(element.elementType)">
    <ng-include src="templateID"></ng-include>
</div>

结果: 10 $ digest()迭代。流产!

观察者在最后5个迭代中发射:[[{{" msg":" fn:function) (c,e,f,g){f = d&amp;&amp; g?g [0]:a(c,e,f,g);返回 b(f,c,e)}"," newval":3},{" msg":" fn:function(a){返回 d(a)}"," newVal":"},{" msg":" templateId"," newval":" row_formelement.html"}],[{" msg":fn:" fn:" 函数(c,e,f,g){f = d&amp;&amp; g?g [0]:a(c,e,f,g);返回 b(f,c,e)}"," newval":3},{" msg":" fn:function(a){返回 d(a)}"," newVal":"},{" msg":" templateId"," newval":" row_formelement.html"}],[{" msg":fn:" fn:" 函数(c,e,f,g){f = d&amp;&amp; g?g [0]:a(c,e,f,g);返回 b(f,c,e)}"," newval":3},{" msg":" fn:function(a){返回 d(a)}"," newVal":"},{" msg":" templateId"," newval":" row_formelement.html"}],[{" msg":fn:" fn:" 函数(c,e,f,g){f = d&amp;&amp; g?g [0]:a(c,e,f,g);返回 b(f,c,e)}"," newval":3},{" msg":" fn:function(a){返回 d(a)}"," newval":"},{" msg":" templateId"," newval":" field_formelement.html"}],[{" msg":" templateId"," newVal"," newval":" text_field.html"},{" msg":" fn: function(a){返回d(a)}"," newval":""}]]

console.log:

  ROW_formElement.html
7 ROW_formElement.html
  FIELD_formElement.html

我知道我可以像以下那样增加TTL,,但是还有其他解决方案吗?

angular.module('myApp',[]) .config(function($rootScopeProvider) { $rootScopeProvider.digestTtl(number); //some number bigger then 10 })

搜索很多后,我认为我的代码没有错误。

如这里回答,并在此plunkr中显示,这就是角度的工作方式。
除了设置更高的Digest TTL编号外,似乎没有其他解决方案。

angular.module('myApp',[]) .config(function($rootScopeProvider) { $rootScopeProvider.digestTtl(number); //some number bigger then 10 })

我遇到了同样的问题,我遵循了此链接的建议,它起作用了!:

Angular

建立嵌套递归指令

最新更新