在Ext.window.Window组件中,我使用组合框字段:
Ext.define('BookApp.view.BookEdit', {
extend: 'Ext.window.Window',
alias: 'widget.bookwindowedit',
layout: 'fit',
autoShow: true,
store: 'BookStore',
modal : true,
initComponent: function() {
var me = this;
me.myStates = Ext.data.StoreManager.get('States').load();
me.items = [{
xtype: 'form',
items: [
{
xtype: 'combobox',
fieldLabel: 'Статус',
name: 'status',
store: me.myStates,
valueField: 'name',
displayField: 'name',
typeAhead: true,
queryMode: 'remote',
listeners: {
'select': function (combo, records) {
index = records.internalId;
filterCombo(combo, index);
},
'boxready': function () {
console.log("form's boxready");
index = combo.getSelection().internalId;
filterCombo(combo, index);
}
}
},
]
}];
me.buttons = [{
text:'Save',
iconCls:'save-icon',
action: 'save'
},
{
text: 'Clear',
scope: this,
action: 'clear'
}
];
me.callParent(arguments);
}
});
function filterCombo(combobox, index) {
store = combobox.getStore();
store.clearFilter();
store.filterBy(
function(record) {
if ((record.data.order_install == index - 1) || (record.data.order_install == index + 1)) {
return true;
} else {
return false;
}
}
);
};
当尝试在render事件的侦听器中获取索引条目时,会发生错误:
TypeError:combo.getSelection(...)为空
为什么会发生错误以及如何正确获取索引条目? 添加boxready事件以获取记录时,此事件不起作用。
答案 0 :(得分:1)
在使用“ initComponent ”的定义时,请确保调用
"this.callParent()"
在“ initComponent”定义的末尾。
在触发“ render ”事件时,将没有任何选择,因此您将获得空数组。
通过“ combo.setSelection(0)”之类的方式显式设置选择。