我有一个递归的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