Javascript 捕获Ext JS中网格行的长时间按住事件
我正在使用网格的rowcontextmenu事件在右键单击时显示一些选项,这在桌面上运行良好。在iPad中,我想在长按上实现相同的功能,但我在sencha文档中没有发现任何类似的事件。我试过jquery长按插件,但没能实现。 我使用的是ExtJS3.4版本。请提供任何提示。这些侦听器(至少)必须应用于,以便这些事件在该特定范围内正确绑定。看这个,;有更多的DOM事件类型需要考虑。您正在查找的事件称为Javascript 捕获Ext JS中网格行的长时间按住事件,javascript,extjs,extjs3,Javascript,Extjs,Extjs3,我正在使用网格的rowcontextmenu事件在右键单击时显示一些选项,这在桌面上运行良好。在iPad中,我想在长按上实现相同的功能,但我在sencha文档中没有发现任何类似的事件。我试过jquery长按插件,但没能实现。 我使用的是ExtJS3.4版本。请提供任何提示。这些侦听器(至少)必须应用于,以便这些事件在该特定范围内正确绑定。看这个,;有更多的DOM事件类型需要考虑。您正在查找的事件称为taphold或longpress(有关“处理事件”的信息,请参阅文档) RowSelection
taphold
或longpress
(有关“处理事件”的信息,请参阅文档)
RowSelectionModel
的事件可以定义为类似的:
new Ext.grid.GridPanel({
/**
* one has to instance the default row-selection model explicitly,
* in order to be able to configure it's event listeners ...
**/
sm: new Ext.grid.RowSelectionModel({
singleSelect: true,
listeners: {
taphold: 'rowcontextmenu'
}
})
});
还可以使用调试事件;这很方便,尤其是在使用过时的框架时,在功能已经得到支持的程度上,这是一个相当值得怀疑的问题
// to intercept all events:
Ext.util.Observable.prototype.fireEvent =
Ext.util.Observable.prototype.fireEvent.createInterceptor(function() {
console.log(this.name);
console.log(arguments);
return true;
});
// to capture the events of a particular component:
Ext.util.Observable.capture(
Ext.getCmp('my-grid-component'), function(event) {
console.info(event);
}
);
使用或,可以定义任何缺少的框架事件。taphold和longpress在Ext 3中不可用。我尝试使用第二个选项,它给出了未定义错误的createInterceptor。调试时,它有一个值,但在框架中的某个地方执行了它的中断。@Jaydeep根据文档,
Ext.util.Observable
至少应该存在。。。而使用Ext.EventManger
将浏览器事件定义为框架事件,这样它们就会被知道并被触发(只有这样才能重新绑定它们,就像第一个示例中一样)。将缺少的事件添加到过时的框架中是最不可能触发它们的。。。升级到更高的框架版本很可能需要进行常规代码重构。。。当然是有定义的;最终,Ext.getCmp()
被传递了一个错误的名称?您还可以在控制台中测试这一点,如果它可以找到组件-无论我传递的.Grid对象是否正确,createInterceptor都会给出一些错误。但在调试过程中,我可以看到该对象,在执行之后,它的错误也出现在框架文件中。。你知道为什么会这样吗?