EXTJS组合框更改在页面加载时执行的事件代码

时间:2014-02-03 06:35:25

标签: extjs

我已经为combobox创建了类,只要在项目中需要组合框,就可以创建该对象。

现在,对于每个组合的每个更改事件,可以有不同的事情要做,所以我没有在我的组合类中为组合更改事件编写任何代码。

我需要的东西就像我可以在创建时或创建后将代码分配给组合更改事件。

所以我写下面的代码。

Ext.getCmp('combo1').on('change', Ext.getCmp('grid').getfilteredStore());

但此代码的问题是:Ext.getCmp('grid').getfilteredStore()仅在页面加载时触发,而不是在change组合上触发。

以下是在需要时创建组合的代码

Ext.create('Comboclass', { 
        id: 'comboId'});

以下是组合类

Ext.define('Comboclass', {
    extend: 'Ext.Container',

    initComponent: function () {

        Ext.apply(this, {
            items: [{
                xtype: 'combo',
                id: this.id,
                store: store1
                listeners: {
                    beforeselect : function (combo, r, index) {
                        if (r.data.id && r.data.id < 0) {
                            r.data.selectable = false;
                            return r.data.selectable;
                        }
                    },
                    change: function (field, newValue, oldValue) {
                        console.log('in dropdown');
                    }
                }
            }]
        });
        this.callParent(arguments);
    }
});

任何人都可以帮助解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

因为您正在执行该功能。 on期望引用函数。

区别在于:

var x = fn(); // x now contains the result of fn
var y = fn; // y now points to the function

您需要删除最后一个括号:

Ext.getCmp('combo1').on('change', Ext.getCmp('grid').getfilteredStore);