Когда директива отложенной загрузки, она никогда не запускается

0

Я пытаюсь лениво загрузить директиву. Он загружен и определен, но затем он никогда не запускается на 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");
            }
        };
    }
}
  • 0
    Я не думаю, что то, как вы определяете вашу директиву, действительно. Эта ссылка может помочь вам stackoverflow.com/questions/12538665/…
  • 0
    @EricWei Изменение, чтобы соответствовать тому, что предлагают некоторые ответы, все еще не работает. Проверьте мое обновление.
Показать ещё 3 комментария
Теги:
angularjs-directive

1 ответ

2
Лучший ответ

Как мне получить угловой, чтобы запустить директиву после ленивой загрузки?

Используйте директиву 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 для компиляции ленивой загруженной директивы.

ДЕМО на PLNKR.

  • 1
    Это отличный обходной путь!
  • 0
    Брю Ур Смитц

Ещё вопросы

Сообщество Overcoder
Наверх
Меню