2016-11-16 17 views
0

C#開発者のための基礎知識があれば謝罪してください。 1つのサイドバーに複数の<accordion>があり、それぞれにアコーディオンを展開または折りたたむためにdata-ng-click="isOpen = !isOpen"があります。問題は、これらのそれぞれが異なるコントローラを呼び出すことです。 isOpen変数をグローバルに設定して、すべてのアコーディオンがデフォルトで展開され、クリックして展開/折りたたむことができるようにする方法はありますか?Razorを使ってjavascript変数を設定する

読む:Passing Javascript to Razor$rootscopeAccordion expand allや他の多くの

これは、セクションのいずれかのサンプルコードです.....異なるコントローラを持つものの、より多くのがあります

<accordion> 
     <div class="zone zone-aside-right"> 


       <div data-ng-controller="SelectUserController" id="account-group-widget"> 
        <accordion-group class="sp-sidebar-module"> 
         <div> 
          <accordion-heading> 
           <h3 class="h4 sp-sidebar-module-header"> 
            <a id="headerRelatedContacts" href="javascript: void(0);" data-ng-click="isOpen = !isOpen"><i id="iconRelatedContacts" class="icon-refresh icon-spin"></i>@mycontact.text</a> 
           </h3> 

          </accordion-heading> 
         </div> 
        </accordion-group> 
       </div> 
</accordion> 

は提案を感謝しています。 ..

+0

はあなたを行うにはすべてのアコーデオンが同時に拡大して崩壊することを望みますか? – user449689

答えて

1

isOpenの値がViewModelにboolとして格納されていると仮定すると、razor @構文を使用して、この値をテキストとして出力できます。e .g。 <script>ブロック内にあります。

ありJSのブール値にC#のブール値を変換するときに、いくつかの注意点があるので、我々はこれを処理するために、次の拡張メソッドを使用します。

/// <summary> 
/// Convert bool value to javascript boolean (as string because it is placed in javascript) 
/// </summary> 
public static System.Web.IHtmlString ToJSBoolean(this bool value) { 
    return new MvcHtmlString(value.ToString().ToLower()); 
} 

かみそりビュー内の使用法:

<script type="text/javascript"> 
    var isOpen = @Model.IsOpen.ToJsBoolean(); 
</script> 
関連する問題