extjs 4:存储回调问题

时间:2013-02-28 16:09:56

标签: php extjs extjs4 store

我正在研究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个新的组合框。

我的回调有问题吗?请大家帮忙。

1 个答案:

答案 0 :(得分:0)

一旦guiDataStore中有2条记录,下次为什么它会为空?

同样,你是否在各种回调电话之间清空商店?