2017-05-08 5 views
0

내 sidenav에 대한 지침을 만들었습니다. 내 sidenav에는 하위 요소가있는 요소가 있습니다. 지금은 sidenav에서 하나의 요소 만 전환 할 수 있지만 최소한 2-3 개 이상 필요합니다. 어떻게 구현해야합니까? ng-show와 함께 AngularJS 하위 메뉴

내 지시어 코드 :

menuItem.directive("menuItem", function() { 
return { 
    restrict: "E", 
    template: "<div ng-click='toggle($event)' ng-transclude></div>", 
    transclude: true, 
    scope: { 
     hash: "@", 
     show: '=', 
    }, 
    link: function($scope) { 
     $scope.toggle = function(e) { 
      $scope.show = !$scope.show; 
     } 

    } 
} 
}); 

내 HTML 코드 :

<menu visible="leftVisible" alignment="left"> 
<menu-item hash="first" show="someVar"> 

    Side Menu item 
    <ul ng-show="someVar"> 
     <li> 
      <a>First submenu item</a> 
     </li> 
     <li> 
      <a>First submenu item</a> 
     </li> 
    </ul> 
</menu-item> 
<menu-item hash="second" show="someVar"> 

    Side Menu item 
    <ul ng-show="someVar"> 
     <li> 
      <a >Second submenu item</a> 
     </li> 
     <li> 
      <a >Second submenu item</a> 
     </li> 
    </ul> 
</menu-item> 
<menu-item hash="third">Side Menu item</menu-item> 
</menu> 

내 목표는 내가 어떻게 이렇게하려면 sidenav에 NG-쇼 개별적으로 아이디어를 하위 메뉴를 열 수 있다는 것입니다? 이 메뉴 항목의 고정 목록이있는 경우

답변

0

, 당신이 경우 변수에서이

<menu visible="leftVisible" alignment="left"> 
    <menu-item hash="first" show="menu1"> 

     Side Menu item 
     <ul ng-show="menu1"> 
      <li> 
       <a>First submenu item</a> 
      </li> 
      <li> 
       <a>First submenu item</a> 
      </li> 
     </ul> 
    </menu-item> 
    <menu-item hash="second" show="menu2"> 

     Side Menu item 
     <ul ng-show="menu2"> 
      <li> 
       <a >Second submenu item</a> 
      </li> 
      <li> 
       <a >Second submenu item</a> 
      </li> 
     </ul> 
    </menu-item> 
    <menu-item hash="third">Side Menu item</menu-item> 
</menu> 

처럼, 각 메뉴 항목에 대해 별도의 변수를 사용할 수 있습니다 menu1menu2 첫 번째 항목의 가시성에 대한 책임 - 가시성

그러나 일부 배열을 반복하는 경우 각 메뉴 항목에 특정 필드를 사용할 수 있습니다.

<menu visible="leftVisible" alignment="left"> 
    <menu-item ng-repeat="item in items" hash="{{item.hash}}" show="item.show"> 
     {{item.title}} 
     <ul ng-show="item.show"> 
      <li ng-repeat="subItem in item.items"> 
       <a>{{subItem.title}}</a> 
      </li> 
     </ul> 
    </menu-item> 
</menu> 

이 경우 각 배열 항목에 show 필드를 사용합니다.

+0

2 개의 메뉴 링크를 클릭하는 순간 두 하위 메뉴가 모두 열립니다. 그러면 한 하위 메뉴 만 열려 있으므로 다른 메뉴 항목을 클릭하면 다른 하위 메뉴가 모두 닫힙니다. –

+0

두 번째 항목의'show' 값을 변경 했습니까? 첫 번째 것은'menu1'을 사용하고, 두 번째는'menu2'를 사용합니다. 첫 번째 코드 예제 – Random

+0

살펴보기 미안하지만 내 질문에 약간의 잘못이 있다고 생각합니다.이 솔루션은 잘 작동합니다. 내가 말한 의미는 case1을 어떻게 구현할 것인가하는 것이었고 menu1을 누른다. 그리고 나서 menu2를 누른다.하지만 그것을 보여 주지만 menu2가 눌려지면 menu1이 닫히기를 바란다. –