2016-07-25 10 views
3

Mithrilを使用して機能するブートストラップアコーディオンを生成する際に問題があります。 このHTMLを手動で書き込むと、アコーディオンは正常に動作します。Mithrilを使用してブートストラップアコーディオンのHTMLを生成する

<div id="mycontent"> 
 
    <div class="container"> 
 
     <div class="row"> 
 
      <div class="col-md-8 p-t-3"> 
 
       <div id="bookingaccordion" role="tablist"> 
 
        <div class="panel panel-default"> 
 
         <div id="headingOne" class="panel-heading" 
 
          role="tab"> 
 
          <h4 class="panel-title"> 
 
           <a data-target="#collapseOne" data-toggle="collapse" 
 
            data-parent="#bookingaccordion"> 
 
            Address and Contact details 
 
           </a> 
 
          </h4> 
 
         </div> 
 
         <div id="collapseOne" class="panel-collapse collapse in" 
 
          role="tabpanel" aria-labelledby="headingOne"> 
 
          Collapsible contact detail form 
 
         </div> 
 
        </div> 
 
        <div class="panel panel-default"> 
 
         <div id="headingTwo" class="panel-heading" role="tab"> 
 
          <h4 class="panel-title"> 
 
           <a data-target="#collapseTwo" data-toggle="collapse" 
 
            data-parent="#bookingaccordion"> 
 
            Booking details 
 
           </a> 
 
          </h4> 
 
         </div> 
 
         <div id="collapseTwo" class="panel-collapse collapse" 
 
          role="tabpanel" aria-labelledby="headingTwo"> 
 
          Collapsible booking detail form 
 
         </div> 
 
        </div> 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div>

私はミスリルビューでこのコードを使用して、まったく同じHTMLのようです何を生成することができます。

return m("div.container", [ 
 
      m("div.row", [ 
 
       m("div.col-md-8.p-t-3", [ 
 
        m("#bookingaccordion", {role: "tablist"}, [ 
 
         m(".panel.panel-default", [ 
 
          m("#headingOne.panel-heading", {role: "tab"}, [ 
 
           m("h4.panel-title", [ 
 
            m('a[data-target="#collapseOne" 
 
             data-toggle="collapse" 
 
             data-parent="#bookingaccordion"]', 
 
             "Address and Contact details" 
 
            ) 
 
           ]) 
 
          ]), 
 
          m('#collapseOne.panel-collapse.collapse.in 
 
           [role="tabpanel" aria-labelledby="headingOne"]', 
 
           "Collapsible contact detail form" 
 
          ) 
 
\t \t \t \t \t \t ]), 
 
         m(".panel.panel-default", [ 
 
          m("#headingTwo.panel-heading", {role: "tab"}, [ 
 
           m("h4.panel-title", [ 
 
            m('a[data-target="#collapseTwo" 
 
             data-toggle="collapse" 
 
             data-parent="#bookingaccordion"]', 
 
             "Booking details" 
 
            ) 
 
           ]) 
 
          ]), 
 
          m('#collapseTwo.panel-collapse.collapse 
 
           [role="tabpanel" aria-labelledby="headingTwo"]', 
 
           "Collapsible booking detail form" 
 
          ) 
 
         ]) 
 
        ]) 
 
       ]) 
 
      ]) 
 
     ]);

生成されたHTMLは完全にアコーディオン初期状態を表示しますが、タイトルのアンカーをクリックすると応答(開閉)がありません。 私はデータ要素を間違って生成していると思われますが、私は困惑しています。

答えて

1

はい、問題がdata-*属性にある、あなたはこのように、m機能に属性として渡す方法があります:

m(
    'a', 
    { 
    'data-target': "#collapseOne", 
    'data-toggle': "collapse", 
    'data-parent': "#bookingaccordion" 
    }, 
    "Address and Contact details" 
) 

あなたはaria-*role属性と同じことをしなければなりません。

+0

この回答は役に立ちましたか?属性名に一重引用符を使用し、その値に二重引用符を使用していることに気付きました。それは重要なことなのでしょうか?もしそうなら、なぜですか? upvoteできません - まだ評判はありません。 – PeterW

+0

@PeterW一重引用符や二重引用符を使用する際には違いはなく、スタイルガイド([airbnb](https://github.com/airbnb/javascript#strings)の1つ)では1つのスタイルガイドを使用することをおすすめしています。コピーした後にコードを編集していたので、値の二重引用符を使用しました。 upvoteできない場合でも、チェックマークをクリックしてこの回答を受け入れることを検討してください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 – Vier

関連する問題