angularjs
  • angularjs-directive
  • ng-show
  • 2017-05-08 44 views 0 likes 
    0

    我已經爲我的sidenav指令。在我的sidenav我有一些元素下面有子菜單項。目前我只能在sidenav中切換一個元素,但我需要至少2-3個元素。我應該如何實現它?AngularJS子菜單中的ng-show指令

    我的指令代碼:

    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> 
    

    我的目標是,我可以單獨與NG-展現在sidenav打開子菜單,任何想法怎麼辦呢?

    回答

    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> 
    

    在這種情況下,變量menu1負責的第一個項目,menu2的可見性 - 知名度第二個,等等

    但是,如果你迭代一些數組,你可以使用每個菜單項的特定字段。

    <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

    對不起,我說我的問題有點不對,這個解決方案工作得很好。我的意思是,如何實現可以說我按下menu1並顯示它的情況,然後按menu2並顯示它,但我希望菜單1在按menu2時關閉等。 –

    相關問題