0

私は次のようなことをしようとしています:ユーザーがボタンをクリックすると、子パネルが表示/非表示になります

問題は、「onbtnClick」関数が1回だけ機能していることです。ボタンをクリックするとパネルが表示され、もう一度クリックしても何も起こらず、エラーも発生しません。パネルは非表示にする必要があります

4

4 に答える 4

2

見た目では、ブールパラメータを関数に渡す必要はあまりありません。

パネルの可視性に基づいて「トグル」関数が純粋に必要であり、Extコンポーネントへの参照がある場合は、次のisVisible()関数を使用できます。

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.panel.Panel-method-isVisible

したがって、onBtnClick関数は次のようになります。

onbtnClick: function (){
    var childPanel = Ext.getCmp('p');

    if(childPanel.isVisible()) {
        childPanel.hide();
    }
    else {
        childPanel.show();
    }
}
于 2012-07-26T21:39:11.353 に答える
1

panel.getEl().toggle(); あなたの目的に役立ちます。

-YP

于 2013-11-29T07:01:07.567 に答える
1
onbtnClick: function (){
    var childPanel = Ext.getCmp('p');

    if (!childPanel.isHidden()) {
        childPanel.hide();
    } else {
        childPanel.show();
    }
}

isVisible() メソッドisHidden () を使用する代わりに、 isVisibleメソッドは、パネルが他のコンポーネントによって覆われている場合、またはまだレンダリングされていない場合 (パネルに隠しプロパティ (hidden = false) がない場合でも) を返す可能性があるためです。

于 2012-07-27T19:19:38.747 に答える
0

あなたは何をすべきかを知るためにブール値のパラメータを取ってsetVisibleを持っています。

childPanel.setVisible( ! childPanel.isVisible() )

この例では、実行ごとに可視性を実際に切り替えます。

于 2019-07-02T09:08:37.303 に答える