AngularJS: Как получить название директивы в функции связывания?

Я хотел бы использовать имя директивы внутри функции связывания. Как я мог его получить?

app.directive('myDirective', function() {
  return {
    link: function(scope, element, attrs) {
      // How could I get directive name here (i.e. 'myDirective')?
    }
  };
});

Ответ 1

Просто определите его вне инъекции:

var name = 'myDirective';
app.directive(name, function() {
  return {
    link: function(scope, element, attrs) {
      console.log(name); // --> myDirective
    }
  };
});

Ответ 2

Возможно внутри compile функция директивы .

directives.directive('myNamedDir', ['$compile', function ($compile) {
    return {
        compile: function(cElem, cAttrs, transclude) {
            var name = this.name;
            return function linkFunction(){
                //use name
            }
        }
   }]);

Ответ 3

app.directive('myDirective', function() {
    return {
        link: function(scope, element, attrs) {
            console.log(arguments.callee.directiveName); // --> myDirective
        }
    };
});

свойство arguments.callee.caller, устаревшее в JavaScript