Extjs4 Ext.view.View selectionchange событие срабатывает поворот при выборе элемента - PullRequest
0 голосов
/ 17 января 2012

Я использую Ext.view.View для просмотра данных. Когда я выбираю один пункт 'выделение' 'событие запускается дважды. Но без «multiSelect: true» он срабатывает только один раз.

Ext.define('myViewView', {
    extend: 'Ext.view.View',
    alias: 'widget.myViewView',
    store: myContentStore,
    cls: 'content-view-view',
    tpl: myContentViewTpl,
    multiSelect: true,
    trackOver: true,
    overItemCls: 'x-item-over',
    itemSelector: '.thumb-wrap',
    emptyText: emptyDataText,
    resizable: true,
    style: {
        overflow: 'auto'
    },
    listeners: {
        selectionchange: function(dv, selections) {

        }
    },
    prepareData: function(data) {
        Ext.apply(data, {
            sizeString: Ext.util.Format.fileSize(data.size),
            modifiedString: Ext.util.Format.date(data.modified, "m-d-Y:g-i-a"),
            fileFormatPath: createBreadCrumb(data.filePath, false)
        });
        return data;
    }

});

1 Ответ

2 голосов
/ 17 января 2012

Он срабатывает дважды, только если вы выбираете что-то другое (например, вы выбрали одну строку, а вы выбрали другую).Первое событие вызывается, потому что вы отменили выбор первой строки, а второе - после того, как другая строка действительно выбрана.Самое простое решение - установить буфер для обработчика событий.

Пример:

listView.on('selectionchange', function(view, nodes){
    // handler
}, this, { buffer: 10 });

или

listeners: {
    selectionchange: function() { 
        // handler
    },
    buffer: 10
}
...