switch ngswitch example angularjs angularjs-directive

angularjs - ngswitch - Carga final de ng-include en js angulares



ngswitch angular 4 (5)

cuál es la mejor manera de detectar el final de la carga html mediante ng -include. Quiero escribir un código cuando se termine de cargar.

Gracias por cualquier idea


puedes usar onload para ello como se muestra a continuación

<div ng-include=".." onload="finishLoading()"></div>

en el controlador,

$scope.finishLoading = function() { }

después de cargar la función de alcance ng-include finishLoading llamará.

aquí está el Demo Plunker trabajando


Puedes usar este código:

$scope.$on(''$includeContentLoaded'', function () { // it has loaded! });


Hay dos formas de detectar cuándo ng-include finalizar la carga, según su necesidad:

1) a través del atributo onload - para expresiones en línea. Ex:

<div ng-include="''template.html''" onload="loaded = true"></div>

2) a través de un evento $includeContentLoaded que ng-include emite - para el manejo en toda la aplicación. Ex:

app.run(function($rootScope){ $rootScope.$on("$includeContentLoaded", function(event, templateName){ //... }); });

cuando termine de cargar el contenido


Aquí hay un ejemplo completo que capturará todos los eventos ng-include load emitidos por la aplicación:

<html ng-app="myApp"> <head> <script src="angular.min.js"></script> </head> <body ng-controller="myController"> <div ng-include="''snippet.html''"></div> <script> var myApp = angular.module("myApp",[]); myApp.controller(''myController'', function($scope) { $scope.$on(''$includeContentLoaded'', function(event, target){ console.log(event); //this $includeContentLoaded event object console.log(target); //path to the included resource, ''snippet.html'' in this case }); }); </script> </body> </html>

Un problema que tuve, y la razón por la que me tomé el tiempo para publicar esto, es que no pude incluir la ng-app y ng-controller en mi marcado HTML.


Si tengo que esperar a que el elemento esté presente, $includeContentLoaded $timeout con $includeContentLoaded :

var selector = ''#foo''; $rootScope.$on(''$includeContentLoaded'', function(event, templateName){ $timeout(() => { const $el = angular.element(selector); if ($el.length) { // Do stuff with element. } }); });

El tiempo de espera le da tiempo de carga correctamente, especialmente si ng-include contiene una directiva que tarda unos milisegundos en procesarse.