1

ExtJS 4.0.7 でこれらのプロパティをinfoContainer拡張しています (関連するもののみを表示)。Ext.panel.Panel

  • 折りたたみ可能: true
  • 折りたたまれた: 真
  • 無効: 真
  • forceLayout: 真

beforeexpandコンポーネント (テキストフィールド、チェックボックスなど) に適用するいくつかの変更 (いくつかのレンダリング) があるので、パネルの でこれを行います。しかし、パネルを拡大すると、パネルが表示された後のコンポーネントの変更がはっきりとわかります。したがって、パネルが開くに、このロジックを完了する必要があります。

では、ロジックが完了したときにのみパネルの展開が発生するように制限できbeforeexpandますか? そして、これを行う方法は?

4

1 に答える 1

3

これが私がそれを行う方法です:

イベントで現在発生させたいレンダリング/変更ロジックを実行する関数を作成しますbeforeexpand

この関数では、パネルにカスタム プロパティを設定して、ロジックに従ってレンダリング/変更されることがわかるようにしますmyPanel.isPrepared = true;

また、この関数の最後で別の呼び出しを行いますmyPanel.expand();

次に、beforeexpandハンドラーに、レンダリング/変更が行われたかどうかを確認する条件を配置します。if (myPanel.isPrepared) {...

成功した場合は、ハンドラーで何もせず、パネルを展開させます。

パスしない場合は、上記の関数を呼び出すとreturn false;、パネルの展開が停止します。関数は、必要なレンダリング/変更を行い、すべてが完了すると展開を呼び出します。

MVC パターンを使用してアプリを作成していないと仮定すると、ハンドラーと関数は次のようになります。

myPanel.on('beforeexpand`, function() {
    if (!myPanel.isPrepared) {
        prepareMyPanel();
        return false;
    }
})

function prepareMyPanel() {
    // rendering / modification logic here...
    myPanel.isPrepared = true;
    myPanel.expand();
}

MVC パターンを使用してアプリを作成している場合は、それを適切なコントローラー ハンドラーに変換できるはずです。

于 2012-06-22T17:53:10.947 に答える