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 に答える