Javascript 如何在ng click事件上设置自定义事件的优先级?
我为web创建了一个angular js应用程序。 我添加了一个输入文本框,并在模糊事件中添加了ng 因为我在使用ng blur时遇到问题,所以我在blur上使用了自定义ng: 在我的代码中是这样的:Javascript 如何在ng click事件上设置自定义事件的优先级?,javascript,angularjs,events,angularjs-directive,Javascript,Angularjs,Events,Angularjs Directive,我为web创建了一个angular js应用程序。 我添加了一个输入文本框,并在模糊事件中添加了ng 因为我在使用ng blur时遇到问题,所以我在blur上使用了自定义ng: 在我的代码中是这样的: app.directive('ngOnBlur', function($parse){ return function(scope, elm, attrs){ var onBlurFunction = $parse(attrs['ngOnBlur']);
app.directive('ngOnBlur', function($parse){
return function(scope, elm, attrs){
var onBlurFunction = $parse(attrs['ngOnBlur']);
elm.bind("blur", function(event) {
scope.$apply(function() {
onBlurFunction(scope, { $event: event });
})});
};
});
问题是当我填写文本框并单击应用程序中的其他按钮(单击)时,即。,
模糊上的ng根本不会触发,我立即进入点击事件
如何更改自定义事件的优先级
html如下所示:
<input type="text" ng-model="x.y" ng-on-blur="doSomething()" />
<ul my-sortable id="sortable">
<li ng-repeat="item in items">
<div ng-switch on="item.type">
<div ng-switch-when ="x" ng-click="doSomething"></div>
</div>
</li>
</ul>
我想提一下,我添加了优先级:100,但它不起作用
如何更改自定义事件的优先级
您可以为您编写的自定义指令提供优先级
。默认情况下为0
但你可以这样做:
HTML
<input type="text" ng-model="x.y" on-blur="doSomething()" />
<button ng-click="init();">press me</button>
演示我想现在我知道它为什么不起作用了 当我点击事件。事件发生在jquery ui的可排序元素上。 也许排序表会改变优先级 我单击如下所示的可拖动元素:
<input type="text" ng-model="x.y" ng-on-blur="doSomething()" />
<ul my-sortable id="sortable">
<li ng-repeat="item in items">
<div ng-switch on="item.type">
<div ng-switch-when ="x" ng-click="doSomething"></div>
</div>
</li>
</ul>
}
});
请告诉我是否有人知道我应该做…?首先谢谢你,但不幸的是,这不起作用。当我编辑文本框并单击“其他”按钮时,会触发ng单击,而与模糊无关。请参阅我的编辑,它对我没有优先级(请参阅演示中的控制台)。实际上,OP的原始代码工作正常。用小提琴查看我对问题的评论。
blur
和click
事件顺序由浏览器定义。Angular只是在它周围创建包装。和blur
应在单击之前触发。您的代码工作正常,在chrome中进行了测试。我猜您的代码不工作,因为页面上的某些其他代码使bind(“blur”)
函数不工作=>无法注册事件处理程序。