我有这个指令:
function dndDirective($timeout) {
return {
template: '<div class="dndComponent"> Title: {{title}} </div>',
scope: {
title: '<'
},
compile: myCompile
};
function myCompile(tElement, tAttrs, transclude) {
return {
pre: function postLink($scope, element, attrs, transclude) {
$scope.$watchGroup(['title'], function(newVals) {
$timeout(function() {
jQuery('.dndComponent').first().myPlugin();
jQuery(element).myPlugin();
});
})
}
}
}
为什么jQuery('.dnd').first()
与jQuery(element)
不同?它们有不同的上下文,我的jQuery插件只能使用第一个选项。
答案 0 :(得分:0)
jQuery(element)
返回使用该指令的元素的jQuery包装器。
jQuery('.dndComponent').first()
返回该类的第一个元素。
假设该指令仅使用一次(不依赖于此),则选择器返回element
的子项,element
是&#39; .dndComponent&#39;的父项。 ;
===
还要考虑使用$(element).find(&#39; .dndComponent&#39;),因为这样你可以使用你的指令N次并且它总是有效,否则它将始终返回.dndComponent
第一条指令。