Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ng click事件上设置自定义事件的优先级?_Javascript_Angularjs_Events_Angularjs Directive - Fatal编程技术网

Javascript 如何在ng click事件上设置自定义事件的优先级?

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']);

我为web创建了一个angular js应用程序。 我添加了一个输入文本框,并在模糊事件中添加了ng

因为我在使用ng blur时遇到问题,所以我在blur上使用了自定义ng: 在我的代码中是这样的:

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”)
函数不工作=>无法注册事件处理程序。