Захватить долгое нажатие или удержание события строки сетки в Ext JS - PullRequest
0 голосов
/ 01 мая 2018

Я использую rowcontextmenu событие grid для отображения некоторых опций при щелчке правой кнопкой мыши, что отлично работает на рабочем столе. В iPad я хочу реализовать такую ​​же функциональность при долгом нажатии, но я не нашел такого события в документах sencha. Я пробовал jquery плагин для длинных прессов, но не смог этого сделать. Я использую версию Ext JS 3.4. Любые намеки, пожалуйста.

1 Ответ

0 голосов
/ 01 мая 2018

эти слушатели (по крайней мере) должны быть применены к Ext.grid.RowSelectionModel , чтобы эти события были правильно связаны в этой конкретной области. см. статью блога ; Есть еще несколько типов событий DOM, которые необходимо учитывать. искомое событие называется taphold или longpress (см. документацию Safari для «Обработки событий»).

события 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'

        }
    })

});

можно также использовать Ext.util.Observable для отладки событий; это очень удобно, особенно при использовании устаревшей платформы, где весьма сомнительно, насколько эта функциональность уже поддерживается.

// 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);
    }
);

с Ext.EventManager.addListener () или .on () , можно определить только любые отсутствующие каркасные события.

...