Hacking with Angular:如何在深层嵌套ngRepeat中获取不同层级的
使用 在线的demo原文的链接angular-china 我们先来看一个数据对象,如下: var appData = [
{
name: 'C++从入门到放弃',author: 'dreamapple',books: [
{name: 'github'},{name: 'google'},0)">'nodejs'},0)">'react'}
]
},{
name: 'Java从入门到跑路',0)">'呵呵哒',0)">'雪碧'},0)">'百事可乐'},0)">'鸡尾酒'}
]
}
];
现在有这么一个要求,我需要将上面的那个 (1)循环出来这个 (2)关于嵌套我们能够使用的索引是 (3)我们目前比较好的一个做法就是通过 (4)我们还需要定义另一个数组 注意:循环 我把里面的重点部分单独拿了出来,然后大家一起来看一看:页面部分: <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"> <"list-group"> <"list-group-item" ng-repeat="v in item.books track by $index" ng-init="innerIndex = $index"> {{v.name}} <"inner-index">innerIndex:{{innerIndex}}</span><button class="btn btn-danger" ng-click="vm.removeItem(outerIndex,innerIndex)">删除</button> </li> <form class="form-inline"> <input class="form-control" ng-model="vm.tempItem[$index]" type="text"> <"btn btn-primary" ng-click="vm.addItem(outerIndex)">添加一项</form> </li> </ul> </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"> <"../lib/jsonFormater/jsonFormater.css"> <script src="http://cdn.bootcss.com/jquery/2.0.0/jquery.js"></script> <"http://cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.js"></"../lib/jsonFormater/jsonFormater.js"></"../../angular-1.4.5/angular.js"></"app.js"></style> .outer-index { color: #FF0000; background-color: #f8f8f8; padding: 3px; border-radius: 6px; } .inner-index { #00AA00; 6px; } </style> </body> <div class="container-fluid" ng-controller="AppController as vm"> <"row"> <"col-md-6"> <{{item.name}}<{{outerIndex}}</{{item.author}}</{{v.name}} <{{innerIndex}}</div> <div id="show-container" class=h3>vm.appData:</"json-container"></div> </body>
JavaScript部分 (function() {
angular.module('app',[])
.controller('AppController',AppController);
AppController.$inject = ['$scope'];
function AppController($scope) {
var vm = this;
// 初始化原始数据
var appData = [
{
name: 'C++从入门到放弃',author: 'dreamapple',books: [
{name: 'github'},{name: 'google'},96)">'nodejs'},96)">'react'}
]
},{
name: 'Java从入门到跑路',96)">'呵呵哒',96)">'雪碧'},96)">'百事可乐'},96)">'鸡尾酒'}
]
}
];
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,innerIndex) {
vm.appData[outerIndex].books.splice(innerIndex,0)">1);
vm.jf.doFormat(;
}
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);
}
}
})(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |