我正在研究Extjs 4应用程序,我正处于需要动态创建视图组件的位置。
当我从组合框中选择一个值时,我有一个加载了新项目的商店。我想为新商店的每个商品创建一个新的视图组件。
我正在使用Extjs 4和MVC架构。
这是创建一个新组合框的功能,当我从另一个组合中选择一个项目时,该组合框被触发:
function createComboBox(label) {
var combo = new Ext.form.ComboBox({
displayField: 'combo',
typeAhead: true,
mode: 'local',
forceSelection: true,
triggerAction: 'all',
emptyText: 'Select item...',
selectOnFocus: true,
fieldLabel: label
});
return combo;
}
这是我的“select combobox”处理程序事件中的代码:
onSelectedValue: function (combo) {
var selected = combo.getValue();
var guiDataStore = this.getGuiDataStore();
guiDataStore.getProxy().url = 'gui_comp_items.php?id_metric=' + selected;
guiDataStore.load({
params: {
id_metric: selected
},
scope: this,
callback: function () {
var paramsRef = this.getParams();//this is the view where I'd like to create the combobox
var total = guiDataStore.getTotalCount();
if (total > 0) {
guiDataStore.each(function (model) {
if (model.get('type_guicomp') == 'combobox') {
paramsRef.down('fieldset[id=filterfieldset]').add(createComboBox(model.get('name_filter')));
paramsRef.down('fieldset[id=filterfieldset]').doLayout();
}
})
}
}
})
}
所以我的问题是,我第一次从现有组合框和total = 0
中选择一个项目时,没有创建组合框并且一切都很好,然后当我选择一个返回total = 2
的值时,2新的组合框被创造出来,这是完美的。但是,在那之后,我再次选择total = 0
的值,商店没有更新,我仍然得到2个新的组合框。
我的回调有问题吗?请大家帮忙。
答案 0 :(得分:0)
一旦guiDataStore
中有2条记录,下次为什么它会为空?
同样,你是否在各种回调电话之间清空商店?