2016-11-16 3 views
0

Извините, если это базовое для разработчиков C#. У меня есть несколько <accordion> на одной боковой панели, и у каждого есть data-ng-click="isOpen = !isOpen", чтобы развернуть или свернуть аккордеон. Проблема в том, что каждый из них вызывает другой контроллер. Есть ли способ глобально установить переменную isOpen, чтобы убедиться, что все аккордеоны по умолчанию расширены и можно щелкнуть, чтобы развернуть/свернуть?Используйте Razor для установки переменной javascript

Read: 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, сохраненное как bool в вашей модели ViewModel, вы можете использовать синтаксис бритвы @, чтобы испускать это значение в виде текста, e .г. внутри блока <script>.

Есть несколько предостережений при преобразовании C# логического значения в булево JS, поэтому мы используем следующий метод расширения для обработки этого:

/// <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> 
Смежные вопросы