1

オブジェクトをグリッドに追加するフォームがあります。私のグリッドは、プロキシを持つストアに接続されています。プロキシ経由でデータベースに新しいエントリを追加しています。新しいエントリを正常に作成できますが、タイムリーにグリッドを更新するのに問題があります。これは私のフォームからの送信ボタンです:

buttons: [{
        text: 'Submit',
        formBind: true, /* only enabled once the form is valid*/
        handler: function() {
            var form = this.up('form').getForm()
            if(form.isValid()) {
                form.submit()
            }
            Ext.getCmp('grid').getStore().load({
                callback: function(records, operation, success) {
                    console.log(records);
                }
            })
        }
    }]

これをアプリで実行すると、Chrome 開発ツールでネットワーク リクエストの順序を表示すると、フォームが送信される前にロード リクエストが呼び出されます。送信ボタンをもう一度押すと、グリッドが更新され、すべてのデータと以前に追加されたエントリが表示されますが、追加されたばかりのエントリは表示されません。したがって、私のグリッドは同期で常に 1 リクエスト遅れています。

グリッドのストアにsync()電話をかけたり、電話をかけたりしましたが、役に立ちませんでした。私が読んだことによると、 load() はグリッドを更新するのに十分なはずです。リクエストの順番がおかしくなっていると思いますが、直し方がわかりません...load()

どんな洞察も大歓迎です。

4

2 に答える 2

2

form.submit() の後に load が呼び出されるようにする方法の 1 つは、次のように呼び出すことです。

myForm.getForm().submit({

    success: function(form, action) {
       store.load();
    }

});

そうは言っても、コード内の form.submit() は store.load() の前に呼び出されるべきだと思います。最初に何が実行されるかを確認するために、Chrome でデバッグを試みましたか?

于 2013-07-22T23:26:45.240 に答える