0

CQ5 でフッター コンポーネントを作成しようとしています。4 つの列があり、すべてが認証可能です。ただし、どの列もオーサリング可能にする必要はありません。つまり、ドロップダウンから選択した値に基づいて、多数の列のみをオーサリングするために多数のタブを開く必要があります。

ドロップダウンを作成しましたが、最大範囲は 6 列です。この目的のためにリスナーを構成する必要があることは知っていますが、方法がわかりません。要件は、ドロップダウンから 3 を選択すると、3 つのタブが 3 つの列を作成するようになるはずです

助けてください。私は非常に重要なことをしている最中です。できるだけ早く仕事を終わらせなければならないので、解決策が非常に早く必要です。

4

1 に答える 1

1

私は今ではこれに遅れているかもしれませんが、まだ必要な場合に備えて:

ドロップダウン要素を閉じる前に、リスナー ノードを追加する必要があります。

<listeners
    jcr:primaryType="nt:unstructured"
    loadcontent="function(box){ //here you also need to handle the hide/unhide when the panel loads for the first time. Use this.getValue() to retrive the intial value }"
    selectionchanged="function(box, value) { 
        for(var c=1;c<=value;c++){
            this.findParentByType('tabpanel').unhideTabStripItem("tab"+c); // You need to handle the opposite with hideTabStripItem("tab"+c);
        }
    }"/>

次に、「loadcontent」と「selectionchange」(これらはドロップダウンのイベントです)の両方で、現在選択されている値を取得し、それを使用してタブを非表示/非表示にします。この場合、タブには「tab1」、「tab2」などの名前が付けられます。名前が正しいことを確認してください。

イベント内の ExtJS は、ダイアログ全体の「tabpanel」コンテナを検索し、名前に基づいて非表示/非表示を切り替えます。メソッド「.enable()」および「.setDisabled(true)」を使用して有効/無効に設定することもできます。これを行う場合は、最初にタブへの参照を取得してください (「.getComponent(tabName).enable()」など)。

私はこの特定のコードをテストしませんでした。コードベースから実際の例を見つけることができませんでしたが、これは正しい方向に導くはずです。

于 2013-08-17T21:07:46.040 に答える