2016-11-29 15 views
0

ich eine rekursive habe Ng-umfassen, die Fehlern führt: $ rootScope: infdig Infinite $ digest Schleife

In meinem ctrl:

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

Aus meiner Sicht:

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

Ergebnis: 10 $ digest() Iterationen erreicht. Abbrechen!

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 

Ich weiß, ich TTL wie folgt zu erhöhen, aber gibt es eine andere Lösung?

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

+0

Kann man irgendwie einen funktionierenden Code Probe zur Verfügung stellen zu sein? Der Digest-Zyklus scheint durch kontinuierliche Wertänderungen erneut wiederholt zu werden. –

+0

Was macht die 'getTemplate()' Funktion? – Robba

+0

Es ist die Funktion, die ich gepostet habe, tut mir leid, dass ich den Namen geändert habe. Ich werde versuchen, ein PLNKR zu erstellen, wenn ich die Zeit habe. – Olezt

Antwort

0

Nach viel suchen, denke ich, kein Fehler in meinem Code ist.

Wie beantwortet here und in diesem plunkr gezeigt ist dies wie angular funktioniert.
Es scheint keine andere Lösung als andere Einstellung eine höhere verdauen TTL-Nummer als 10.

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

Verwandte Themen