Ste*_*rov 8 javascript event-propagation angularjs angularjs-directive
我有指令做这样的事情:
app.directive('custom', function(){
return {
restrict:'A',
link: function(scope, element){
element.bind('click', function(){
alert('want to prevent this');
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
是的,有必要为这种情况做jQuery-way绑定.
现在,如果满足某些条件,我想停止此事件(单击)传播.
试图做:
$event.stopPropagation();
$event.preventDefault();
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
这里小提琴 - 例如http://jsfiddle.net/STEVER/5bfkbh7u/
在你的情况下你不能停止传播因为click事件发生在同一个元素上,只有两个不同的处理程序.
但是,您可以利用这一事实,即在控制器和指令中这是相同的事件对象ngClick.所以你可以做的是为这个事件对象设置一些属性并在指令中检查它:
$scope.dosomething = function($event){
$event.stopPropagation();
$event.preventDefault();
alert('here');
if (someCondtion) {
$event.stopNextHandler = true;
}
}
Run Code Online (Sandbox Code Playgroud)
并在指令中:
link: function(scope, element){
element.bind('click', function(e) {
if (e.stopNextHandler !== true) {
alert('want to prevent this');
}
});
}
Run Code Online (Sandbox Code Playgroud)
演示: http ://jsfiddle.net/5bfkbh7u/6/
| 归档时间: |
|
| 查看次数: |
19538 次 |
| 最近记录: |