Ошибка рекурсивного 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
})
У меня была такая же проблема, и я последовал совету по этой ссылке, и это сработало !: