javascript - 带有 Twitter Bootstrap 的 JSON 的 AngularJS 菜单和子菜单

标签 javascript json angularjs

我是 AngularJS 的新手。我正在使用 Twitter Bootstrap 进行个人项目,因此我可以学习 AngularJS。我的数据在一个 JSON 文件中。项目标题和主菜单链接正在正常填充。这些链接之一下有一个子菜单,这是我无法填充的内容。 我想做的是使用 ng-repeat 加载子菜单。所以基本上我正在处理 ng-repeat 内部的 ng-repeat。欢迎任何提示。 谢谢!

我的 Controller 看起来像这样:

'use strict';

var app = angular.module('myApp', []);

app.controller('NavCtrl', function($scope, $http) {

$http.get('app/content/nav.json').success(function(data) {

    $scope.nav   = data;
    $scope.links = data.links;

    });

});

我的 JSON:

{
"projectTitle" : "My Website Title",
"links" : [
    {"name" : "Home", "url" : "/", "className" : ""},
    {"name" : "About", "url" : "/about", "className" : ""},
    {"name" : "Contact", "url" : "/contact", "className" : ""},
    {"name" : "Categories", "url" : "/categories", "className" : "dropdown", "sub" :
        [
            {"name" : "Tech Stuff", "url" : "/techStuff"},
            {"name" : "AngularJS", "url" : "/angularJS"},
            {"name" : "HTML5", "url" : "/html5"},
            {"name" : "Javascript", "url" : "/javascript"},
            {"name" : "jQuery", "url" : "/jquery"}
        ]
    }
]
}

我的 HTML:

<div ng-controller="NavCtrl" class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-inner">
        <div class="container">
            <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="brand" href="#">{{nav.projectTitle}}</a>
            <div class="nav-collapse collapse">
                <ul class="nav">
                    <li ng-repeat="link in links" class="{{link.className}}">
                        <a href="{{link.url}}" class="{{link.sub && 'dropdown-toggle' || ''}}" data-toggle="{{link.sub && 'dropdown' || ''}}">{{link.name}} 
                            <b ng-show="link.sub" class="caret"></b>
                        </a>
                        <ul class="dropdown-menu" ng-show="link.sub">
                            <li ng-repeat="sub in links">
                                <a href="">{{sub.name}}</a>
                            </li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>

最佳答案

将子菜单数据填充模板更改为

<li ng-repeat="subItem in link.sub">
    <a href="{{subItem.url}}">{{subItem.name}}</a>
</li>

link.sub是当前数据对象的子集合,然后循环遍历子集合的每一项。

Demo on jsFiddle

关于javascript - 带有 Twitter Bootstrap 的 JSON 的 AngularJS 菜单和子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18038926/

相关文章:

javascript - 类型错误 : Cannot read property 'insertBefore' of null

javascript - CodeMirror - 从编辑器外部获取 linting 结果

javascript - 使用传单js绘制多边形

ruby-on-rails - 具有继承资源的嵌套对象

javascript - 有没有一种简单的方法可以在不创建 $q.defer() 变量的情况下返回对 $q.all 的成功调用?

javascript - 从异步函数返回值时遇到问题

javascript - 满足条件后显示警报

javascript - 使用javascript获取剪贴板数据?

javascript - 在 Firebase 的不同节点中写入多个对象

javascript - 来自 javascript 的 fetch 调用无法访问 java REST 服务