jquery - 如何在 Angular 1.x 链接函数中获取元素的其他事件处理程序
问题描述
我正在处理 angular 中的两个属性,它们处理输入元素的 Enter 按键事件和 Blur 事件,它们都调用范围的相同方法:
<input type="number" ng-enter="doSomeThing()" ng-blur="doSomething()" />
此设置的问题在于 Enter 按键事件几乎同时触发了 Blur 事件,因此这导致服务器上的 EF 并发错误。所以为了解决这个问题,我不得不这样做,所以该方法只被调用一次。顺便说一句,ngEnter 是一个自定义指令:
myApp.directive('ngEnter', function () {
function link(scope, element, attrs) {
element.bind("keypress", function (event) {
if (event.which === 13) {
scope.$apply(function () {
scope.$eval(attrs.ngEnter);
});
event.preventDefault();
}
});
};
link.$inject = ["scope", "element", "attrs"];
return {
link: link
}
});
我可以通过调用内部按键函数来取消模糊事件,element.off('blur')
如下所示:
if (attrs.ngBlur && attrs.ngBlur == attrs.ngEnter) {
element.off('blur');
}
但现在的问题是元素中的模糊处理程序消失了,所以我不得不将处理程序重新绑定到模糊事件,但元素没有事件列表。我试过jQuery._data(element, "events" );
但它没有返回任何东西,即使元素data
没有定义。element.off('blur')
工作所以处理程序必须在某个地方但是我应该在哪里或如何访问这些处理程序?与 Jquery 相比,Angular 存储这些处理程序的方式是否不同?
解决方案
推荐阅读
- node.js - 无法在 Windows 版本 10 上安装 firebase 工具,不推荐使用 npm WARN
- python - KivyMD 错误:ValueError:KivyMD:必须在加载根小部件之前初始化 App 对象
- java - 在java中运行linux命令
- node.js - 通过 Mongoose (nodejs) 从远程服务器连接到 MongoDB
- typescript - 使用 rxjs 将套接字事件拆分为多个处理程序/主题
- javascript - js中用document.getelementbyid获取属性名
- python - 如何按常数放大这个 Gtk3 对话框?
- php - 根据 WooCommerce 中的购物车小计将特定的应税运费设置为 0
- r - 对齐表格中的文本和图像 - pdf 输出
- mongodb - 使用与所需点的距离对 mongoDB 中的项目进行排序