选择全部-在Ext JS组合框中选择无

Select all - Select none in Ext JS Combobox

本文关键字:选择 组合 Ext 全部 JS      更新时间:2023-09-26

根据这个问题的答案:在ExtJS 4.0组合框中选择所有

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。

但是,如果我多次使用它,操作将应用于所有实例。只需尝试在一个组合中单击"选择全部/选择无",您将看到其他变化:http://jsfiddle.net/hernan666/vfbkgmmu/。

对于原始答案,我得到相同的错误行为:http://jsfiddle.net/hernan666/dFEsc/414/

我将感谢任何帮助解决这个问题

我认为使用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;
                        }
                    }
                }
            });
        }
    }
}

工作示例:http://jsfiddle.net/ot0eaqv1/