2014-08-31 123 views
0

让我开始说我非常处于学习使用Angular的初始阶段。我已经完成了多次搜索,并且看到了多个设置子菜单的菜单的例子,但是我没有发现任何可以看到子菜单中有子菜单的例子。Angular JS和Bootstrap - 在子菜单中设置多个子菜单

我也是,正如你可能已经注意到的,不是很擅长写一个问题。让我继续使用代码和一个例子的小提琴。希望有人能够解释为什么这不起作用,以及我的逻辑出错了。

的JavaScript

var App = angular.module("rcfdto",[]); 
App.controller("menuController", ['$scope', function($scope){ 

$scope.locs = [ 

          { 

              name: "Menu Option #1", 

              link: "#OP1", 

              id: "Option1", 

              submenu: null 

          }, 

          { 

              name: "Menu Option #2", 

              link: "#OP2", 

              id: "Option2", 

              submenu: [ 

                  { 

                      name: "Submenu Option 1", 

                      link: "#SOP1", 

                      id: "SubOption1", 

                      subsubmenu: null 

                  }, 

                  { 

                      name: "Submenu Option 2", 

                      link: "#SOP2", 

                      id: "SubOption2", 

                      subsubmenu: null 

                  }, 

                  { 

                      name: "Submenu Option 3", 

                      link: "#SOP3", 

                      id: "SubmenuOption3", 

                      subsubmenu: [ 

                          { 

                              name: "SubSubMenu Option 1", 

                              link: "#SSOP1", 

                              id: "SubSubmenuOption1" 

                          }, 

                          { 

                              name: "SubSubMenu Option 2", 

                              link: "#SSOP2", 

                              id: "SubSubmenuOption2" 

                          } 

                      ] 

                  } 

              ] 

          }, 

          { 

              name: "Menu Option #3", 

              link: "#OP3", 

              id: "Option3", 

              submenu: [ 

                  { 

                      name: "Submenu Option 4", 

                      link: "#SOP4", 

                      id: "SubmenuOption4", 

                      subsubmenu: [ 

                          { 

                              name: "SubSubMenu Option 3", 

                              link: "#SSOP3", 

                              id: "SubSubmenuOption3" 

                          } 

                      ] 

                  }, 

                  { 

                      name: "Submenu Option 5", 

                      link: "#SOP5", 

                      id: "SubmenuOption5", 

                      submenu: null 

                  } 

              ] 

          } 

]; 

}]);

HTML

<body ng-app="rcfdto"> 

<div class="menu container" ng-controller="menuController"> 

<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> 

    <li ng-repeat="loc in locs" ng-class="{'dropdown-submenu' : loc.submenu && loc.submenu.length}"> 

    <a href="{{loc.link}}" id="{{loc.id}}">{{loc.name}}</a> 

     <ul ng-if="loc.submenu && loc.submenu.length" class="dropdown-menu"> 

     <li ng-repeat="subloc in loc.submenu"> 

      <a href="{{subloc.link}}" id="{{subloc.id}}">{{subloc.name}}</a> 

      <ul ng-if="subloc.subsubmenu && subloc.subsubmenu.length" class="dropdown-menu"> 

       <li ng-repeat="subsubloc in subloc.subsubmenu"> 

       <a href="{{subsubloc.link}}" id="{{subsubloc.id}}">{{subsubloc.name}}</a> 

       </li> 

      </ul> 

     </li> 

     </ul> 

    </li> 

</ul> 

CSS

.menu { 

      position:relative; 

} 

.menu > .dropdown-menu { 

      position:static; 

      display:block; 

} 

My Fiddle

回答

1

你忘了把你的菜单中的正确类。

<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> 
    <li ng-repeat="loc in locs" ng-class="{'dropdown-submenu' : loc.submenu && loc.submenu.length}"> 
    <a href="{{loc.link}}" id="{{loc.id}}">{{loc.name}}</a> 
     <ul ng-if="loc.submenu && loc.submenu.length" class="dropdown-menu"> 

<!-- ng-class added in this line --> 
      <li ng-repeat="subloc in loc.submenu" ng-class="{'dropdown-submenu' : subloc.subsubmenu && subloc.subsubmenu.length}"> 
       <a href="{{subloc.link}}" id="{{subloc.id}}">{{subloc.name}}</a> 
       <ul ng-if="subloc.subsubmenu && subloc.subsubmenu.length" class="dropdown-menu"> 
        <li ng-repeat="subsubloc in subloc.subsubmenu"> 
        <a href="{{subsubloc.link}}" id="{{subsubloc.id}}">{{subsubloc.name}}</a> 
        </li> 
       </ul> 
      </li> 
      </ul> 
     </li> 
    </ul> 

我建议将“subsubmenu”重命名为“submenu”,并从这个混乱的结构中提取指令。

+0

这解释了很多。感谢您的帮助,我仍然在想这些东西,并尝试做出正面或反面的看法,并将其作为一个项目来学习。我也会做出其他改变。再次感谢你 – Hintshigen 2014-08-31 13:54:25