2016-04-26 4 views
0

Я читал о том, как мы можем определить пользовательские директивы и нашел следующий метод:Сколько способов определения пользовательской директивы в angularjs?

angular.module("myApp", []) 
    .directive("directiveName", function() { 
     return { 
      // implementation code will go here 
     } 
    }); 

, но в последнее время я нашел еще один способ для определения пользовательской директивы, которая является следующим:

angular.module("exampleApp", []) 
    .directive("directiveName", function() { 
     return function (scope, element, attrs) { 
      // implementation code will go here 
     } 
    }); 

Мне интересно узнать, какой путь лучше и быстрее, чем другой? (Пожалуйста, опишите плюсы и минусы обоих, если это возможно), и есть ли еще какие-либо способы определения пользовательских директив?

+0

[руководство] (https://docs.angularjs.org/guide/directive#creating-directives) говорит, что лучшая практика заключается в использовании объекта определения, а не функции. – yarons

ответ

0

Возврат функции в директиве является лишь сокращением для функции связи в полном определении.
Таким образом, если вы задаете нечто большее, чем функцию связи, то вам нужно написать это длинный путь:

angular.module("myApp", []). 
    directive("directiveName", function() { 
     return { 
      link: function(scope, element, attrs) { 
       // implementation code will go here 
      }, 
      templateUrl: "template.html", // for example 
     }; 
    }) 
; 

Вместо этого, если вам просто нужно функцию связи, вы можете использовать shortand версии:

angular.module("myApp", []) 
    .directive("directiveName", function() { 
     return { 
      // implementation code will go here 
     } 
    }) 
;