代码:
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
}
});