0

我正在开发一个 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 个新的组合框。

我的回调有问题吗?请任何帮助将不胜感激。

4

1 回答 1

0

曾经guiDataStore有2条记录,为什么下次它会是空的?

例如,您是否在各种回调调用之间清空存储?

于 2013-03-01T13:31:03.163 回答