2016-11-10 8 views
0

以下のマークアップを検討してください。アコーディオンの場合です。私は開いているものに異なるCSS(背景色)を適用する必要があります。このために、ng-classディレクティブを使用したいと思います。現在開かれているヘッダーには常にaria-expanded属性がtrueに設定されています。他の人には間違っている。属性値に基づいてng-classクラスを追加および削除する

<v-pane-header class="header ng-scope ng-isolate-scope" role="tab" tabindex="0" aria-selected="true" aria-expanded="true"> 

これをどのように行うことができますか。私はモデル変数などに関してそれを行う方法を知っています。注意aria-expanded属性は、accordionプラグインによって自動的に追加されます。

+0

ng-class = "{'disabled-appointment':content.slots.length == 0}のようなモデル変数でng-classを使用できますが、属性のアイデアは得られませんすべて – tariq

+0

見ることのできる最小限のコードを作成できますか? –

+0

@MuhammadUsmanアコーディオンはプラグインによって構築されており、他の多くの依存関係を持っているため、少し難しいです。 – tariq

答えて

0

私はこの問題を解決するために非常に異なる方法を採用しました。私のコードでng-classや他の関数やメソッドを使ってこれを行う代わりに、私はアコーディオンプラグイン自体に取り組んだ。アコーディオンは、aria-expanded属性を動的に追加します。だから私はプラグインコードを変更し、プラグインがaria-expanded属性を追加するところからスタイル属性を適用しました。今は完璧に動作しています。

function expand() { 
    accordionCtrl.disable(); 

    paneContent.attr('aria-hidden', 'false'); 

    paneHeader.attr({ 
     'aria-selected': 'true', 
     'aria-expanded': 'true', 
     'style': 'background-color:#FFF0C9 !important' // Added style here. Can add a class too though. 

    }); 

    emitEvent('onExpand'); 
    // Rest of the code...... 

これはNG-クラスを通してそれをやっての私の質問への答えではありませんが、それでも同じようなことを達成しようとして誰にも可能なアプローチを提供します。

関連する問題