我试图创建一个带有角度的指令,用于显示多选项,将其选项加载到带有ajax调用的模板中。 这是我现在的指示:
function AngularMultiselect () {
return {
restrict: 'E',
replace: true,
templateUrl: 'temp.html',
scope: {
tipo: "@"
},
link: function(scope, element, attrs){
scope.open_tab = function(){
element.addClass('open');
$(document).on("click",function(){ //beign called at the same time
console.log("document clicked");
});
};
console.log('multiselect being called');
}
}
}
HTML:
<filtro tipo="client"></filtro>
在模板内:
<button type="button"
class="multiselect btn"
ng-click="open_tab()">
我遇到的问题是标签会在同一次点击时打开和关闭。我会使用该活动来阻止活动的传播,但我无法发送...我已尝试open_tab($event)
,但$event
包含'client'
。有什么想法吗?
在这里你可以看到它有效:http://codepen.io/vandervals/pen/VeZrdV
答案 0 :(得分:0)
只需将文档单击处理程序附加延迟即可避免此问题:
而不是:
scope.open_tab = function(){
element.addClass('open');
$(document).on("click",function(){ //beign called at the same time
console.log("document clicked");
});
};
只是这样做:
scope.open_tab = function(){
element.addClass('open');
$timeout(function() {
$(document).on("click",function(){ //no longer beign called at the same time
console.log("document clicked");
});
}, 1, false);
};
避免初始点击事件触发第二个处理程序