Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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 捕获Ext JS中网格行的长时间按住事件_Javascript_Extjs_Extjs3 - Fatal编程技术网

Javascript 捕获Ext JS中网格行的长时间按住事件

Javascript 捕获Ext JS中网格行的长时间按住事件,javascript,extjs,extjs3,Javascript,Extjs,Extjs3,我正在使用网格的rowcontextmenu事件在右键单击时显示一些选项,这在桌面上运行良好。在iPad中,我想在长按上实现相同的功能,但我在sencha文档中没有发现任何类似的事件。我试过jquery长按插件,但没能实现。 我使用的是ExtJS3.4版本。请提供任何提示。这些侦听器(至少)必须应用于,以便这些事件在该特定范围内正确绑定。看这个,;有更多的DOM事件类型需要考虑。您正在查找的事件称为taphold或longpress(有关“处理事件”的信息,请参阅文档) RowSelection

我正在使用网格的rowcontextmenu事件在右键单击时显示一些选项,这在桌面上运行良好。在iPad中,我想在长按上实现相同的功能,但我在sencha文档中没有发现任何类似的事件。我试过jquery长按插件,但没能实现。 我使用的是ExtJS3.4版本。请提供任何提示。

这些侦听器(至少)必须应用于,以便这些事件在该特定范围内正确绑定。看这个,;有更多的DOM事件类型需要考虑。您正在查找的事件称为
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都会给出一些错误。但在调试过程中,我可以看到该对象,在执行之后,它的错误也出现在框架文件中。。你知道为什么会这样吗?