/ / Завършено Зареждане на ng-include в ъгъл js - angularjs, angularjs-direktiva

Завършено Зареждане на ng-include в ъглови js - angularjs, angularjs-директива

какъв е най-добрият начин за откриване на крайността на зареждането на html чрез ng –включване. Искам да напиша някакъв код, когато ще приключи зареждането.

Благодаря за всяка идея.

Отговори:

68 за отговор № 1

Има два начина да откриете кога ng-include готово зареждане, в зависимост от вашите нужди:

1) чрез onload атрибут - за вградени изрази. Ex:

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

2) чрез събитие $includeContentLoaded че ng-include излъчва - за работа с приложения. Ex:

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

когато приключи зареждането на съдържанието


15 за отговор № 2

можеш да използваш onload за него, както по-долу

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

в контролер,

$scope.finishLoading = function() {

}

след зареждане на ng-include finishLoading функция за обхват ще извика.

тук е работещият Демонстратор


8 за отговор № 3

Можете да използвате този код:

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

0 за отговор № 4

Ето пълен пример, който ще обхване всички ng-include събития за зареждане, излъчвани от приложението:

<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>

Проблем, който имах и причината да отделя време да публикувам това е, че не успях да включа и двете ng-app и ng-controller в моята HTML маркировка


0 за отговор № 5

Ако трябва да изчакам елемента да присъства, увивам a $timeout с $includeContentLoaded:

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

Времето за изчакване му дава време за зареждане правилно, особено ако ng-include съдържа директива, на която са нужни няколко милисекунди.