2016-06-07 11 views
0

Ich habe mehrere divs verantwortlich für verschiedene Teile der Ansicht und eine, die eine Überlagerung für alle von ihnen ist (# loading-div). Ich möchte das Laden div warten, bis alle Ansichten geladen sind und dann verschwinden, aber es funktioniert nicht wie erwartet. Bitte beachten Sie den folgenden Code.Feuer-Funktion, nachdem alle Ansichten in Angular JS geladen wurden

HTML

<div id="content-wrapper" ng-controller="UAMController as uamCtrl"> 
    <div id="left-column" ng-include="uamCtrl.leftColumnTemplate"></div> 
    <div id="middle-column" ng-include="uamCtrl.middleColumnTemplate"></div> 
    <div id="right-column" ng-class="{'active': uamCtrl.middleColumnTemplate}" ng-include="uamCtrl.rightColumnTemplate"></div> 
    <div id="loading-div" ng-init="coreCtrl.loadingBlock()"></div> 
</div> 

CONTROLLER

self.loadingBlock = function() { 
    $('#loading-div').fadeOut(); 
} 

Könnten Sie mir bitte auf die Frage helfen, das div zu erscheinen direkt nach dem alles andere in der Hülle geladen wird.

Vielen Dank im Voraus.

+0

haben Sie die Run-Phase in der Winkelinitialisierung ausgecheckt? https://docs.angularjs.org/api/ng/type/angular.Module#run. Insbesondere wird es ausgeführt, nachdem der Winkel fertig initialisiert wurde. –

Antwort

2
try below code in your controller.. $viewContentLoaded event will be fire after all DOM is loaded to the browser. 

$scope.$on('$viewContentLoaded', function(){ 
    $('#loading-div').fadeOut(); 
}); 
+0

Ich habe $ Timeout-Service hinzugefügt und es tut, was ich von der Funktion erwartet :) –

+0

Danke Emil .. Können Sie bitte diesen Kommentar abstimmen? –

1

Sie $includeContentLoaded verwenden können, die als die Dokumentation Zustand ist ...

jedes Mal, das ausgestrahlte ngInclude Inhalt neu geladen wird.

Dann können Sie diese auch jedes Mal hören die ngInclude aktualisiert:

$rootScope.$on('$includeContentLoaded', function(event) { 
    $('#output').append('<p>' + event.targetScope.name + ' include\'s content was loaded.</p>'); 
}); 

prüfen diese fiddle für die Demonstration.

+0

Ich denke, $ viewContentLoaded wartet nicht auf den Inhalt Laden aller ng-Include-Ansichten. Verwenden Sie $ includeContentLoaded ist richtig, aber wenn Sie auf viele ng-includes warten müssen und Sie nicht wissen, welches das neueste ist, müssen Sie vielleicht auf alle warten, wie ich in https://stackoverflow.com/questions/35422003/angular gesagt habe -directive-how-to-make-sure-all-verschachtelte-Vorlagen-und-partitions-loaded/44805254 # 44805254 –

Verwandte Themen