我有一个Angular指令。在link
函数中,我这样做:
link: function(scope, element, attrs) {
...
element.data('startY', value);
...
}
我想做的是使用指令名称加上perfix
'startY'
,而无需对名称进行硬编码。我想动态获取名称。有什么办法吗? Angular是否提供一种反映方式?就像是:
link: function(scope, element, attrs) {
...
element.data(this.$name + '-startY', value);
...
}
如果不是,为避免冲突,选择
data()
键的最佳建议最佳做法是什么? 最佳答案
如AngularJS source code所示,指令名称是在指令选项所在的对象文字上下文中分配的。但是,链接函数无法访问对象文字的上下文this
,因为它将被传递到编译函数,在编译过程完成后,该函数将被返回并调用该函数。
要在链接函数中获取名称,可以遵循以下任何建议:
[1]创建一个变量,该变量可能包含对对象文字的引用(指令选项)。
.directive('myDirective', function() {
var dir = {
link: function(scope, elem, attr) {
console.log(dir.name);
}
};
return dir;
});
[2]由于指令是在指令选项的上下文中调用的,因此您还可以使用编译函数来获取指令的名称。
.directive('myDirective', function() {
return {
compile: function(tElem, tAttr) {
var dirName = this.name;
return function(scope, elem, attr) { /* link function */ }
}
};
});
关于javascript - 在AngularJS中获取指令名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24040496/