2013-02-28 48 views
1

我将我的extjs4应用程序设计为mvc。 有时,在某些不清楚的情况下,当我从控制器中将远程数据加载到存储中时,视图不反映更改;这发生在组合框和网格上。 这就像我错过了关于extjs设计的一些东西,我希望这个问题能让事情更清楚。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,网格只显示标题,并没有高度

我遇到或多或少同样的问题与组合框..这就像如果我填充该物化视图的相同功能中的商店,然后商店的消费者并不反映商店的变化。

有人可以帮忙吗?

回答

0

解决方案:

我的商店里有此属性:

buffered: true 

我不知道为什么,但如果存储缓冲,我遇到上述问题问。 我通过设置来解决问题:

buffered: false