web-dev-qa-db-ja.com

Angularjsアコーディオンパネルヘッダーのng-クリック

AngularJS UIの場合Bootstrapアクティブにしたいisopenwhenpanel-headingがクリックされましたが、方法が見つかりませんでした。このバージョンでは、リンクをクリックした場合にのみアクティブになります。

これが私が試したことです。

<accordion-group is-open="isopen">
    <accordion-heading ng-click="isopen=!isopen">
        I can have markup, too! 
        <i class="pull-right glyphicon" 
           ng-class="{'glyphicon-chevron-down': isopen, 'glyphicon-chevron-right': !isopen}"></i>
    </accordion-heading>
    This is just some content to illustrate fancy headings.
</accordion-group>

ng-click = "isopen =!isopen"

これは私がPlunkerで試したリンクです

AngularJS UI Bootstrap

前もって感謝します..

25
Alpan Karaca

編集:より良い解決策は、ng-click="isopen=!isopen"accordion-group要素に移動することです。このようにして、パネルの見出しの任意の場所(エッジを含む)をクリックしてパネルを開閉します。

<accordion close-others="oneAtATime">
    <accordion-group is-open="isopen" ng-click="isopen=!isopen">
        <accordion-heading >
           I can have markup, too! 
           <i class="pull-right glyphicon" 
              ng-class="{'glyphicon-   chevron-down': isopen, 'glyphicon-chevron-right': !isopen}">
           </i>
        </accordion-heading>
        This is just some content to illustrate fancy headings.
    </accordion-group>
</accordion>

編集終了

<accordion-heading>のコンテンツを<div>で囲む

<accordion close-others="oneAtATime">
    <accordion-group is-open="isopen" >
        <accordion-heading ng-click="isopen=!isopen">
           <div>
            I can have markup, too! 
           <i class="pull-right glyphicon" 
              ng-class="{'glyphicon-   chevron-down': isopen, 'glyphicon-chevron-right': !isopen}">
           </i>
           </div>
       </accordion-heading>
       This is just some content to illustrate fancy headings.
   </accordion-group>
</accordion>
59
klode

非常にシンプルなCSSベースのソリューション:

    .panel-heading {
        padding: 0;
    }

    .panel-title a {
        display: block;
        padding: 10px 15px;
    }

ただし、複雑な見出しは使用していません。以下に示すように見出し属性のみを使用しているため、上記の例ではテストしていません。

<uib-accordion-group heading="Details" class="form-horizontal" is-open="true">
13
Sean

必要なことは、ヘッダーがaccordion-group.htmlイベントを受け取るようにng-clickテンプレートを変更することです。

<div class="panel {{panelClass || 'panel-default'}}">
  <div class="abc panel-heading" ng-keypress="toggleOpen($event)" ng-click="toggleOpen($event)" >
    <h4 class="panel-title">
      <a href tabindex="0" class="accordion-toggle" accordion-transclude="heading"><span ng-class="{'text-muted': isDisabled}">{{heading}}</span></a>
    </h4>
  </div>
  <div class="panel-collapse collapse" collapse="!isOpen">
      <div class="panel-body" ng-transclude></div>
  </div>
</div>

次に、コードでaccordion-groupのテンプレートURLとして指定します

<accordion-group heading="Dynamic Body Content" template-url="accordion-group.html">

例: http://plnkr.co/edit/EXUgyNi8hrqQbh5maJUx?p=preview

9