javascript - 如何使用 JSON 中的 ng-repeat 填充 <li> 中的值

标签 javascript json angularjs angularjs-ng-repeat

由于这个 AngularJS 对我来说是新的,我试图使用 JSON 和 ng-repeat 填充列表的下拉值。我看到了 "select" 的 ng-option,但没有看到 "li"

下面是我尝试读取的 JSON 文件:

[
{
    "header": {
        "name": "Electronics",
        "subHeader": {
            "childHeader": [{
                    "name": "Mobiles",
                    "view": "#mobile"
                }, {
                    "name": "Tablet",
                    "view": "#tablet"
                }, {
                    "name": "Television",
                    "view": "#television"
                }, {
                    "name": "Headphones",
                    "view": "#headphones"
                }]
        }
    },
        "name": "Men",
        "subHeader": {
            "childHeader": [{
                    "name": "Shirts",
                    "view": "#shirts"
                }, {
                    "name": "T-Shirts",
                    "view": "#tshirts"
                }, {
                    "name": "Jeans",
                    "view": "#jeans"
                }, {
                    "name": "Trousers",
                    "view": "#trousers"
                }]
        }
    }

]

JS文件如下并且工作正常:

var mainAngular = angular.module('myApp', ['ngRoute']);
mainAngular.controller('headerCategoryController', function($scope,$http) {
var hCat=  "./customAngular/headerCatalogue.json";
$http.get(hCat).success(function(response){
    $scope.categories=response;
});
});

我希望它以以下格式生成:

            <div class="headerMenu" >
                    <ul class="nav navbar-nav">
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Electronics<b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                <li><a href="index_category.htm">Mobiles</a></li>
                                <li><a href="product.htm">Tablets</a></li>
                                <li><a href="cart.htm">Televisions</a></li>
                                <li><a href="checkout.htm">Headphones</a></li>
                            </ul>
                        </li>
                    </ul>
                    <ul class="nav navbar-nav">
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Men<b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                <li><a href="index_category.htm">Shirts</a></li>
                                <li><a href="product.htm">T-Shirts</a></li>
                                <li><a href="cart.htm">Trousers</a></li>
                                <li><a href="checkout.htm">Jeans</a></li>
                            </ul>
                        </li>
                    </ul>
                    </div>

我现在正在做的是:

<div class="headerMenu" ng-controller="headerCategoryController">
                    <ul class="nav navbar-nav" ng-repeat="category in categories">
                        <li class="dropdown">
                            <a href="" class="dropdown-toggle" data-toggle="dropdown">{{category.header.name}}<b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                <li ng-repeat="val in category"><a href="{{val.header.subHeader.childHeader.view}}">{{val.header.subHeader.childHeader.name}}</a></li>
                            </ul>
                        </li>
                    </ul>
</div>

我为此引用了“json array disply in <li> using angular js”链接,但仍然没有运气。有人可以帮忙吗!

最佳答案

这是您提供的 JSON 的固定版本:

[
    {
        "name": "Electronics",
        "subHeader": [
            {
                "name": "Mobiles",
                "view": "#mobile"
            },
            {
                "name": "Tablet",
                "view": "#tablet"
            },
            {
                "name": "Television",
                "view": "#television"
            },
            {
                "name": "Headphones",
                "view": "#headphones"
            }
        ]
    },
    {
        "name": "Men",
        "subHeader": [
            {
                "name": "Shirts",
                "view": "#shirts"
            },
            {
                "name": "T-shirts",
                "view": "#tshirts"
            },
            {
                "name": "Trousers",
                "view": "#trousers"
            },
            {
                "name": "Jeans",
                "view": "#jeans"
            }
        ]
    }
]

注意标题和子标题如何是数组。

接下来, View 也必须改变一点:

<div class="headerMenu" ng-controller="headerCategoryController">
  <ul class="nav navbar-nav" ng-repeat="category in categories">
    <li class="dropdown">
      <a href="" class="dropdown-toggle" data-toggle="dropdown">{{category.name}}<b class="caret"></b></a>
      <ul class="dropdown-menu">
        <li ng-repeat="subheader in category.subHeader"><a ng-href="{{subheader.view}}">{{subheader.name}}</a></li>
      </ul>
    </li>
  </ul>
</div>

这是一个有效的 plnkr:http://plnkr.co/edit/9UN6DjEuSZCtBjc1SOhK?p=preview

关于javascript - 如何使用 JSON 中的 ng-repeat 填充 <li> 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121672/

相关文章:

javascript - 从 jQuery 调用存储在变量中的函数

android - 在 Android 中将 JSON 转换为 HashMap 的问题

json - 输出分号分隔的字符串

css - 如何在 ng-animate 之后保持 CSS3 动画状态?

javascript - 从 JSON 加载数据表时出错

javascript - 与现有页面内容交互的 Firefox 扩展

javascript - 如何格式化作为对象数组中值的日期

javascript - 将文本文件数据的第一列转换为 php 或 JSON

php - 未在 Controller (codeigniter)中获取 AngularJS 发布数据

javascript - Angular : How can I call a controller function from an HTML view using ng-if or another Angular directive