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,则网格仅显示标题并且没有高度

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

有人可以帮忙吗?

4

1 回答 1

0

解决方案:

我的商店有这个属性:

buffered: true

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

buffered: false
于 2013-02-28T19:12:22.563 回答