我正在开发一个 Extjs 4 应用程序,现在我需要动态创建视图组件。
当我从组合框中选择一个值时,我有一个加载了新项目的商店。我想为新商店的每件商品创建一个新的视图组件。
我正在使用带有 MVC 架构的 Extjs 4。
这是创建一个新组合框的函数,当我从另一个组合中选择一个项目时会触发该组合框:
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;
}
这是我的“选择组合框”处理程序事件中的代码:
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 个新的组合框。
我的回调有问题吗?请任何帮助将不胜感激。