如何获得callingElement
以下的值?
myModule.directive('SomeDirective',function(){
var callingElement = ? // I want to get the current element here
var typeAttribute = callingElement.getAttribute('type');
switch (typeAttribute) {
'typeA':
return typeAFactory();
}
});
我该怎么做?
我的目标是获取元素属性,以便根据调用元素的type属性的值将调用重定向到工厂函数
答案 0 :(得分:0)
您的指令函数应该返回链接函数或符合Angular directive API的对象。在关联功能中,您可以暂停$scope
,$element
,$attributes
和ngModelCtrl
(可选)。
$element
就是你想要的。请注意,它不是正常的DOM元素。如果你的应用程序中有jQuery,它将是一个jQuery元素。如果不这样做,它将是一个jqLite元素(jqLite是jQuery的简单版本)。
所以你的最终指令可能类似于:
angular.module('someApp', [])
.directive('someDirective',
function(factoryA, factoryB) {
function link($scope, $element, $attributes) {
switch($element.val()) {
case 'a':
return factoryA
case 'b':
return factoryB
}
}
return {
link: link
}
}
)
请注意如何在指令中注入工厂。所以,继续注入你想在那里使用的工厂。
答案 1 :(得分:0)
呸。我一直在想这一切都错了。
答案是否定的,我无法在指令工厂内获取调用元素。原因是工厂在编译过程的早期只调用一次,以获取指令对象本身(从工厂返回)。
返回的指令对象是用于每个指令实例的东西,因此我将不得不使用它(编译,构造函数,模板函数,前后链接函数)。