对不均匀深度的数据进行嵌套ng重复

时间:2013-07-02 12:58:42

标签: angularjs angularjs-ng-repeat

在角度js中,我试图通过控制器构建我的网站导航。在导航菜单中,某些菜单有子菜单,有些菜单没有。这是我的导航控制器的简化版本。

function NavCtrl($scope) {
  $scope.menus = [
    {"name": "Destinations",
     "url": "/#/destinations",
    "submenu":[
    {
      "name":"America",
      "url":"#"
    },
    {
      "name":"Europe",
      "url":"#"
    }
    ]},
    {"name": "Friend Finder",
     "url": "/#/friend-finder"},
    {"name": "Blog",
     "url": "/#/blog"},
  ];
}

这是我用来输出它的代码:

<ul class="nav" ng-controller="NavCtrl">
      <li ng-repeat="menu in menus">
        <a href="{{menu.url}}">
          {{menu.name}}
        </a>
        <ul>
          <li ng-repeat="submenu in menu.submenu">
            <a href="{{submenu.url}}">
            {{submenu.name}}
            </a>
          </li>
        </ul>
      </li>
    </ul>

如果菜单没有子菜单,我有没有输出内部ul?

1 个答案:

答案 0 :(得分:3)

我还没有对它进行过测试,但我相信你可以通过添加类似ul之类的东西来展示你的menu.submenu,如果没有data-ng-show="menu.submenu"(这就是你想要的吗?)到你的内心ul

像这样:

<ul class="nav" ng-controller="NavCtrl">
  <li ng-repeat="menu in menus">
    <a href="{{menu.url}}">
      {{menu.name}}
    </a>
    <ul data-ng-show="menu.submenu">
      <li ng-repeat="submenu in menu.submenu">
        <a href="{{submenu.url}}">
        {{submenu.name}}
        </a>
      </li>
    </ul>
  </li>
</ul>

也许你需要一个更好的测试,或者将submenu设置为false,因为我不确定空数组或对象是否会像我期望的那样运行,但我很确定这是一般的想法。