0

ajax ストアを使用するツリー パネルがあります。サーバーがノードの結果をフェッチするとき、通常は瞬時ではありません (数秒かかります)。

ルート ノードをリロードする別のグリッド コントロールがあります (さまざまなパラメーターに応じて)

これにより、前のリクエストが完了する前にリクエストが送信されると、奇妙な動作が発生する可能性があります。

  1. ユーザーがグリッドで何かを選択すると、ツリーがリクエストを送信します
  2. 前のリクエストが完了する前に、ユーザーが何かを変更すると、新しいリクエストが送信されます
  3. 両方のリクエストが完了した後にノードを展開すると、ツリーに問題が発生し始める

ツリーをリロードする前に、ツリー ストアから送信されたすべての保留中の要求を中止する方法はありますか?

よろしくお願いします。アミタイ。

PS - ExtJS バージョン 4.1.1

4

1 に答える 1

1

ツリー ストアにデータを追加するのは難しい作業です。フレームワークは、データをツリー ストアにロードまたはロードするたびに、整列を維持するために多くのことを行います。例として、別の場所のツリーに既に存在するツリー ストアにレコードを追加してみてください。レコードの ID が永続的である (サーバーから設定されている) 場合、すべてが壊れてしまいます。これは、ツリー ストアには複雑な機械があり、すべてのユース ケースに適合しない可能性があるためです。

したがって、競合する 2 つの要求がツリー ストアにデータをロードしようとすると、うまく機能しないのも不思議ではありません。何ができるでしょうか?

  1. マスクをロードします。ツリー ブランチが展開されると、ローディング マスクがツリーを覆い、他のコントロールを非表示にする必要があります。これにより、同時データ操作を回避できます。4.1.1 では、これは実際に OOTB で動作します (以前は壊れていました)。

  2. 外部コントロールがツリーに影響を与えることを許可している場合は、'loading' プロパティhttp://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-property-loadingを見てください。読み込みを確認すると、他のアクションが続行できなくなります。必要に応じて、保留中の要求をキャンセルするためのデータ接続の「中止」メソッドがあります。

  3. 最後に、データ接続のautoAbort プロパティを見てください: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Connection-cfg-autoAbortあなたが探しているものになります。

于 2012-08-26T20:01:23.037 に答える