美好的一天。 我在EXTjs中完成了一个巨大的项目,在一个特定的视图中,有一个组合框选择国家,我想添加一个名为“WW”(WorldWide)的新“虚拟国家”,在商店加载后仅限于此特定点。Extjs仅在一个视图中向组合框添加新元素
我的第一个尝试是直接向商店中添加一个监听器,但是这在所有视图和商店所有地方都添加了新的国家/地区,这是一个很大的失败,因为项目的其他部分未构建到处理这个虚拟的国家。
所以,我想直接添加这个新的元素,我不得不使用它,但我有一些问题(我是很新的分机,我进入它非常缓慢)。 其实我已经推出了这样的事情:
tbar: [
{
xtype: 'adcombobox',
displayField: 'name',
id:'formCountry',
reference: 'formcountry',
valueField: 'id',
store: 'Countries',
value: 0,
minChars: 0,
queryMode: 'local',
typeAhead: true,
forceSelection: true,
allowBlank: false,
emptyText: 'Select a country',
listConfig: {
itemTpl: [
'<div><span class="" style="margin-right: 10px;"><img src="resources/flags/{id}.png"></span>{name}</div>'
]
},
listeners: {
select: 'onCountrySelect',
onLoad: function(store) {
store.insert(0, {
id:"ww",
shortCode: 'WW',
name: 'WorldWide'
});
}
}
}
这个什么都不做。 我不知道我是否打电话给错误的事件,或什么... 有人可以帮助我吗?你能带我走对路吗? 我也使用了“加载”事件,但没有成功。
更新1:
我来到这个解决方案在这一刻:
listeners: {
select: 'onCountrySelect',
afterRender: function(store) {
this.getStore().insert(0, {
id:"ww",
shortCode: 'WW',
name: 'WorldWide'
});
}
}
,似乎使的伎俩,是不是合法的?我担心的是要添加这个国家“只有一次”,所以afterRender似乎是正确的事件选择,因为“负载”不存在于组合框中(我读过它的某处)。
我没有得到到底什么意思是“只有一次”?每当此代码运行时,您的记录将始终被插入。 –
实际上我每次用组合框打开面板时都害怕得到一个“全球范围”,但似乎只有一次触发afterrender,顺便说一句,我只能得到一个全球范围的国家,这没关系现在,我试图找出如何增强代码,但实际上这是在做伎俩。 –