Я пытаюсь лениво загрузить директиву. Он загружен и определен, но затем он никогда не запускается на html. Как мне получить угловой, чтобы запустить директиву после ленивой загрузки?
.config(function ($compileProvider, routes, $provide) {
//Lazy define
$compileProvider.directive('myDirective', function ($rootScope, $location, $filter) {
console.log( "This IS called" );
return function (scope, element, attrs) {
console.log( "This is NEVER called");
}
}
}
HTML:
<div my-directive></div>
Если я не буду лениво загружать его, он называется.
EDIT: Это также не работает:
.config(function ($compileProvider, routes, $provide) {
//Lazy define
$compileProvider.directive('myDirective', function ($rootScope, $location, $filter) {
console.log( "This IS called" );
return {
restrict: 'A',
link: function (scope, element, attrs) {
console.log( "This is NEVER called");
}
};
}
}
Как мне получить угловой, чтобы запустить директиву после ленивой загрузки?
Используйте директиву ng-if
в HTML.
<body ng-app='test'>
<h1>Hello Plunker!</h1>
<div my-directive ng-if="defined"></div>
<button ng-click="defineIt()">Define it</button><br>
</body>
Установив defined
переменную в true
после того, как директива будет загружена лениво, директива ng-if
будет использовать службу компиляции $compile
для компиляции ленивой загруженной директивы.