我想在链接函数内部使用指令的名称。我该如何获取它?
app.directive('myDirective', function() {
return {
link: function(scope, element, attrs) {
// How could I get directive's name here (i.e. 'myDirective')?
}
};
});
我想在链接函数内部使用指令的名称。我该如何获取它?
app.directive('myDirective', function() {
return {
link: function(scope, element, attrs) {
// How could I get directive's name here (i.e. 'myDirective')?
}
};
});
可以在指令的compile
函数内部实现。
directives.directive('myNamedDir', ['$compile', function ($compile) {
return {
compile: function(cElem, cAttrs, transclude) {
var name = this.name;
return function linkFunction(){
//use name
}
}
}]);
link
、template
、预链接等函数中也可以实现。 - Miquel Al. Vicens只需要在注入外定义它:
var name = 'myDirective';
app.directive(name, function() {
return {
link: function(scope, element, attrs) {
console.log(name); // --> myDirective
}
};
});
app.directive('myDirective', function() {
return {
link: function(scope, element, attrs) {
console.log(arguments.callee.directiveName); // --> myDirective
}
};
});
JavaScript中arguments.callee.caller
属性已被弃用
_invokeQueue
(应该是内部的)来获取指令的注入方式 - 当然,这样做会极其死板,所以我不建议这样做。 - Eliran Malka$injector.get('myDirective')
)。从中获取名称并不容易。但我希望我是错的 - 这样的选项可能很好。 - Eliran Malka