Extjs:在存储加载时呈现数据

时间:2013-02-28 17:36:12

标签: extjs4.1

我将我的extjs4应用程序设计为mvc。 有时,在某些不清楚的情况下,当我从控制器将远程数据加载到存储中时,视图不会反映更改;这适用于组合框和网格。 这就像我错过了关于extjs设计的一些东西,有了这个问题,我希望能让事情更加清晰。

考虑这个不适合我的例子:

控制器:

...
init: function() {
    this.control({
        // * This is the alias of a grid panel. 
        // * When I dbl-click a record, I want to display it in a modal window
        'w_fares_index': {
            itemdblclick: function(grid, record) {
                var view = Ext.widget('w_fares_edit');
                view.down('form').loadRecord(record);

                var store = this.getStore('StoreBillsModels');
                store.load({
                    params: {
                        'where': {
                            "id_fare": record.get('id')
                        }
                    }
                });
            }
        },
...

视图

...
extend: 'Ext.window.Window',
alias : 'widget.w_fares_edit',
...
items[{
    xtype: 'form',
    ...
}, {
    xtype: 'gridpanel',
    store: 'StoreBillsModels',
    columns: [{
        header: 'Id',
        dataIndex: 'id',
        flex: 1
    }, ...]
}]

使用此代码,将打开新的模态窗口,并将单击的记录加载到表单中。但是,即使存储了StoreBillsModels商店(我可以看到它分析网络请求),新窗口内的网格面板也不会显示任何记录。

另外,我注意到一些奇怪的事情:

  • 如果StoreBillsModels的大小为1,则网格显示空白线
  • 如果商店尺寸为0,则网格仅显示标题且没有高度

我在组合框中遇到了或多或少相同的问题。就像我在实现视图的同一个函数中填充商店一样,然后商店消费者不会反映商店的变化。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

解决方案:

我的商店有这个属性:

buffered: true

我不知道为什么,但如果商店是缓冲的,我会遇到上面提到的问题。 我通过设置来解决问题:

buffered: false