2012-01-17 3 views
0

Я пользуюсь внешним видом. Просмотр для просмотра данных. Когда я дважды выбираю один элемент «changechange» триггера события. Но без «multiSelect: true» он срабатывает только один раз.Extjs4 Ext.view.View selectionchange event trigger twise при выборе элемента

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

}); 

ответ

2

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

Пример:

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

или

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

Поблагодарите you.Its работает прекрасно. – jeewiya