Могут ли настраиваться функции AngularJS для предварительной ссылки и пост-ссылки?

Я видел много ссылок на AngularJS функции pre-and post-link в литературе об AngularJS.

Я не уверен, однако, могут ли они быть настроены или являются внутренними для структуры.

Другими словами, как разработчик AngularJS, могу ли я предоставить свои собственные функции pre и post link для моих пользовательских директив?

Ответ 1

Да, вы можете, согласно @Mikke ответить. Подводя итог, существует четыре способа объявления связующих функций:

  • Внутри compile явно указывается как функции preLink, так и postLink:

    compile: function compile(tElement, tAttrs, transclude) {
      return {
        pre: function preLink(scope, iElement, iAttrs, controller) { ... },
        post: function postLink(scope, iElement, iAttrs, controller) { ... }
      }
    }
    
  • Внутри compile неявно возвращается только postLink:

    compile: function compile(tElement, tAttrs, transclude) {
      return function postLink( ... ) { ... }
    }
    
  • Внутри link явно указывается как preLink и postLink:

    link: {
      pre: function preLink(scope, iElement, iAttrs, controller) { ... },
      post: function postLink(scope, iElement, iAttrs, controller) { ... }
    }
    
  • От использования link с помощью postLink неявно:

    link: function postLink( ... ) { ... }
    

Ответ 2

Да, вы можете предоставить свои собственные функции предварительной и последующей ссылки. См. Директивную схему в Angular API всеобъемлющей директивы Docs.

{
    compile: function compile(tElement, tAttrs, transclude) {
        return {
            pre: function preLink(scope, iElement, iAttrs, controller) { ... },
            post: function postLink(scope, iElement, iAttrs, controller) { ... }
        }
        // or
        // return function postLink( ... ) { ... }
    },
}