1

代码:

xtype: 'selectfield',
id: 'selectType',                           
cls: 'combobox',                            
store: 'ProvidersType',
displayField: 'name',
valueField: 'id',
listeners: {                                
change: function(field, value) {
    alert(111);
}
}

应用程序加载后我有“111”警报,不仅在选择字段中选择新选项时。在使用 setStore 或 setValue 或 updateOptions 方法后我也有此警报...这非常糟糕,因为我正在从 json 加载 selectfield 的选项,并且总是有错误,因为我从当前选择的 selectfield 值中获取 json 请求的参数...任何想法如何避免这种行为并使其像在 jQuery 中一样正常工作?

编辑:

嗯,它适用于静态选项,但如果我从商店加载选项则效果不佳......

此代码运行良好,我仅在选择更改时发出警报:

xtype: 'selectfield',
                id: 'selectType',                           
                cls: 'combobox',                            
                options: [
                    {text: 'First Option',  value: 'first'},
                    {text: 'Second Option', value: 'second'},
                    {text: 'Third Option',  value: 'third'}
                ],
                listeners: {                                
                    change: function(field, value) {
                        alert(111);                         
                    }

但是,如果我从商店连接选项,我会立即收到应用程序加载警报:

                        xtype: 'selectfield',
                        id: 'selectType',                           
                        cls: 'combobox',                            
                        store: 'ProvidersType',
                        displayField: 'name',
                        valueField: 'id',
                        listeners: {                                
                            change: function(field, value) {
                                alert(111);

                            }
                        }   

商店是:

Ext.define('Providers.store.ProvidersType', {    
extend: 'Ext.data.Store',
config: {
    model: 'Providers.model.Provider',
    proxy: {
        type: 'scripttag',
        url : 'http://example.dk/providers/service.php',
        extraParams: {
            action: 'provider_types',
            username: 'test2',
            callback: '?',                      
            format: 'json'          
        },          
        reader: {
            type: 'json',
            rootProperty: 'providers'
        }
    },      
    autoLoad: true

}
});
4

0 回答 0