2016-11-29 9 views
0

У меня есть рекурсивная Ng-включают, что приводит к ошибке: $ rootScope: infdig Бесконечные $ дайджеста 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() итераций. Aborting!

Watchers fired in the last 5 iterations: [[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":3},{"msg":"fn: function (a){return d(a)}","newVal":""},{"msg":"templateID","newVal":"ROW_formElement.html"}],[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":3},{"msg":"fn: function (a){return d(a)}","newVal":""},{"msg":"templateID","newVal":"ROW_formElement.html"}],[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":3},{"msg":"fn: function (a){return d(a)}","newVal":""},{"msg":"templateID","newVal":"ROW_formElement.html"}],[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":3},{"msg":"fn: function (a){return d(a)}","newVal":""},{"msg":"templateID","newVal":"FIELD_formElement.html"}],[{"msg":"templateID","newVal":"TEXT_field.html"},{"msg":"fn: function (a){return 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 })

+0

Можете ли вы предоставить образец рабочего кода каким-то образом? Цикл дайджеста, по-видимому, повторно перезапускается после постоянных изменений значений. –

+0

Что делает функция 'getTemplate()'? – Robba

+0

Это функция, которую я опубликовал, извините, я изменил ее название. Я попытаюсь создать plnkr, когда у меня будет время. – Olezt

ответ

0

После поиска много, я думаю, что нет никакой ошибки в своем коде.

Как ответил here и показан в этом plunkr, это как раз то, как угловые работы.
Там, кажется, нет никакого другого решения, кроме установки более высокого переваривать число TTL, чем 10.

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