Hacking with Angular:如何在深层嵌套ngRepeat中获取不同层级的
在线的demo 原文的链接angular-china 我们先来看一个数据对象,如下: var appData = [ { name: 'C++从入门到放弃',author: 'dreamapple',books: [ {name: 'github'},{name: 'google'},{name: 'nodejs'},{name: 'react'} ] },{ name: 'Java从入门到跑路',author: '呵呵哒',books: [ {name: '雪碧'},{name: '百事可乐'},{name: '鸡尾酒'} ] } ]; 现在有这么一个要求,我需要将上面的那个 (1)循环出来这个 注意:循环 我把里面的重点部分单独拿了出来,然后大家一起来看一看: <ul class="list-group" ng-repeat="item in vm.appData" ng-init="outerIndex = $index"> <h3>{{item.name}}<span class="outer-index">outerIndex:{{outerIndex}}</span></h3> <h4>{{item.author}}</h4> <li class="list-group-item"> <ul class="list-group"> <li class="list-group-item" ng-repeat="v in item.books track by $index" ng-init="innerIndex = $index"> {{v.name}} <span class="inner-index">innerIndex:{{innerIndex}}</span><button class="btn btn-danger" ng-click="vm.removeItem(outerIndex,innerIndex)">删除</button> </li> <li class="list-group-item"> <form class="form-inline"> <input class="form-control" ng-model="vm.tempItem[$index]" type="text"> <button class="btn btn-primary" ng-click="vm.addItem(outerIndex)">添加一项</button> </form> </li> </ul> </li> <hr ng-show="!$last"> </ul> 控制器部分: function removeItem(outerIndex,innerIndex) { vm.appData[outerIndex].books.splice(innerIndex,1); } 我们可以先看控制器里面的函数, 如果对我上面所说的还没有很好理解的话,你可以尝试自己练习一下。下面是源码部分: HTML部分 <head> <meta charset="UTF-8"> <title>1</title> <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.css"> <link rel="stylesheet" href="../lib/jsonFormater/jsonFormater.css"> <script src="http://cdn.bootcss.com/jquery/2.0.0/jquery.js"></script> <script src="http://cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.js"></script> <script src="../lib/jsonFormater/jsonFormater.js"></script> <script src="../../angular-1.4.5/angular.js"></script> <script src="app.js"></script> <style> .outer-index { color: #FF0000; background-color: #f8f8f8; padding: 3px; border-radius: 6px; } .inner-index { color: #00AA00; background-color: #f8f8f8; padding: 3px; border-radius: 6px; } </style> </head> <body> <div class="container-fluid" ng-controller="AppController as vm"> <div class="row"> <div class="col-md-6"> <ul class="list-group" ng-repeat="item in vm.appData" ng-init="outerIndex = $index"> <h3>{{item.name}}<span class="outer-index">outerIndex:{{outerIndex}}</span></h3> <h4>{{item.author}}</h4> <li class="list-group-item"> <ul class="list-group"> <li class="list-group-item" ng-repeat="v in item.books track by $index" ng-init="innerIndex = $index"> {{v.name}} <span class="inner-index">innerIndex:{{innerIndex}}</span><button class="btn btn-danger" ng-click="vm.removeItem(outerIndex,innerIndex)">删除</button> </li> <li class="list-group-item"> <form class="form-inline"> <input class="form-control" ng-model="vm.tempItem[$index]" type="text"> <button class="btn btn-primary" ng-click="vm.addItem(outerIndex)">添加一项</button> </form> </li> </ul> </li> <hr ng-show="!$last"> </ul> </div> <div id="show-container" class="col-md-6"> <h3>vm.appData:</h3> <div id="json-container"></div> </div> </div> </div> </body> JavaScript部分 (function() { angular.module('app',[]) .controller('AppController',AppController); AppController.$inject = ['$scope']; function AppController($scope) { var vm = this; // 初始化原始数据 var appData = [ { name: 'C++从入门到放弃',{name: '鸡尾酒'} ] } ]; vm.appData = appData; vm.tempItem = []; vm.addItem = addItem; vm.removeItem = removeItem; config(); function addItem(outerIndex) { if(vm.tempItem[outerIndex]) { vm.appData[outerIndex].books.push({ name: vm.tempItem[outerIndex] }); vm.tempItem[outerIndex] = ''; vm.jf.doFormat(vm.appData); } else { alert('添加项不能为空!') } } function removeItem(outerIndex,1); vm.jf.doFormat(vm.appData); } function config() { var options = { dom : '#json-container',tabSize: 2,quoteKeys: true,imgCollapsed: "../lib/jsonFormater/images/collapsed.gif",imgExpanded: "../lib/jsonFormater/images/expanded.gif",isCollapsible: true }; vm.jf = new JsonFormater(options); vm.jf.doFormat(vm.appData); } } })(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 解决WebService部署时出现的“未能创建类型...”错误
- linux – 从Docker内部访问蓝牙适配器?
- angularjs – ng-change on select选项调用多个唯一函数
- 我可以阻止Angular.js的json过滤器排除以$开头的属性吗?
- Bootstrap 学习之(十五)------ 媒体对象,well
- bbossgroups-2.0-RC 发布
- shell:shell 创建多个指定大小的文件,循环删除指定大小文
- 如何在角度2中从组件创建和调用管道?
- unix – ‘find -delete’和’rm -rf’之间的区别?
- java – 从一个在docker容器中运行的JVM应用程序将日志发送