Ошибка рекурсивного Ng-включения: $rootScope:infdig Infinite $digest Loop

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

Наблюдатели сработали за последние 5 итераций: [[{"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: функция (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 })

2 ответа

Решение

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

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

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

У меня была такая же проблема, и я последовал совету по этой ссылке, и это сработало !:

Создание вложенных рекурсивных директив в Angular

Другие вопросы по тегам