根据这个问题的答案:Select all in ExtJS 4.0 Combobox
afterrender: function () {
me.container.on({
click: function(e) {
console.log('on clic called');
var el = e.getTarget('div', 3, true);
if(el.getAttribute('action') == 'select-all') {
me.select(me.getStore().getRange());
me.setSelectedCount(me.getStore().getRange().length, flabel);
allSelected = true;
} else if (el.getAttribute('action') == 'select-none'){
me.reset();
allSelected = false;
}
}
})
}
我在Ext JS中使用'Select All'和'Select None'实现了我自己的Combobox。
但是,如果我多次使用它,则操作将应用于所有实例。只需在一个组合中点击“全选/全部选择”,您就会看到其他更改的结果:http://jsfiddle.net/hernan666/vfbkgmmu/。
对于原始答案,我得到了同样的错误行为:http://jsfiddle.net/hernan666/dFEsc/414/
感谢您解决此问题的任何帮助
答案 0 :(得分:2)
我认为使用me.container.on
是问题。
我尝试了一种不同的方法,根据您的示例,听取expand
然后点击选择器元素,它似乎有效:
listeners: {
expand: {
single: true,
fn: function () {
var me = this,
flabel = this.getFieldLabel();
me.picker.on({
click: {
element: 'el',
fn: function (e) {
var el = e.getTarget('div', 3, true);
if (el.getAttribute('action') == 'select-all') {
me.select(me.getStore().getRange());
me.setSelectedCount(me.getStore().getRange().length, flabel);
allSelected = true;
} else if (el.getAttribute('action') == 'select-none') {
me.reset();
allSelected = false;
}
}
}
});
}
}
}