当选择项目时,Extjs4 Ext.view.View selectionchange事件触发twise

时间:2012-01-17 04:33:33

标签: extjs extjs4 dataview multi-select

我使用Ext.view.View作为我的数据视图。当我选择一个项目'selectionchange'事件触发器两次。但是如果没有“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 个答案:

答案 0 :(得分:2)

只有在您选择其他内容时才会触发两次(例如,您选择了一行并选择了另一行)。因为取消选择第一行而触发第一个事件,而在真正选择其他行之后触发第二个事件。 最简单的解决方案是为事件处理程序设置缓冲区。

示例:

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

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