高级结构化:环绕ng重复项目Angular.js
Advanced structuring: Surrounding ngRepeated items Angular.js
您有一个正在迭代的对象数组,如何用(element)包围每个(x)元素?
如果您的目标是:
每4ng个重复元素周围都有一个(元素)
surrounding
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
/
surrounding
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
/
使(元素)围绕4ng重复元素的每2组
complicated
surrounding
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
/
surrounding
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
/
/
complicated
surrounding
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
/
surrounding
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
ng-repeated-elem
/
/
ng重复的正常用法:
<div ng-controller="ExampleContrller as example" >
<div ng-repeat="ex in example.arr">
<span>{{ex.a}}</span>
<span>{{ex.b}}</span>
</div>
</div>
将输出:
<div ng-controller="ExampleContrller as example" >
<div ng-repeat="ex in example.arr">
<span>a</span>
<span>b</span>
</div>
<div ng-repeat="ex in example.arr">
<span>a</span>
<span>b</span>
</div>
<div ng-repeat="ex in example.arr">
<span>a</span>
<span>b</span>
</div>
<div ng-repeat="ex in example.arr">
<span>a</span>
<span>b</span>
</div>
</div>
如何让ng repeat输出以下内容:
<div ng-controller="ExampleContrller as example" >
<section> <!-- get a section to surround every (x) ng-repeated elements -->
<div ng-repeat="ex in example.arr">
<span>a</span>
<span>b</span>
</div>
<div ng-repeat="ex in example.arr">
<span>a</span>
<span>b</span>
</div>
</section>
<section>
<div ng-repeat="ex in example.arr">
<span>a</span>
<span>b</span>
</div>
<div ng-repeat="ex in example.arr">
<span>a</span>
<span>b</span>
</div>
</section>
</div>
这里有一种方法,通过创建另一个具有适当分组的数组并使用两个ng-repeat
:
$scope.data2 = (function(data, count) {
var arr = [];
var len = data.length / count;
for (var i=0 ; i<len ; i++) {
arr.push(data.slice(i*count, (i+1)*count));
}
return arr;
})($scope.data, 3);
-
<section ng-repeat="group in data2">
<div ng-repeat="item in group">
<span>{{item.a}}</span>
<span>{{item.b}}</span>
</div>
</section>
data
是原始数组,count
是每组中的项数
小提琴在这儿:http://jsfiddle.net/a9n1e7w5/2/
可能有更好的方法可以做到这一点,但这是有效的。
这和奥斯汀写的是一样的,他只是写得更好。
http://jsfiddle.net/u4e7dcgv/
<main id="main" class="content column" role="main" ng-controller="GalleryController as gallery">
<div ng-repeat="row in gallery.rows" class="content row">
<article ng-repeat="gal in row" class="post">
<div class="post-content">{{gal.p}}</div>
</article>
</div>
</main>
/**
* Splits an array of items into smaller arrays within the item.
* @param {Array} - arrayOfItems
* @param {Number} - numberOfRows (default is 4)
* @returns {Array}
*/
function wrapIntoRows(arrayOfItems, numberOfRows) {
var items = arrayOfItems,
rows = numberOfRows || 4,
wrappedDom = [];
function wrap(arr, num) {
var surround, notSurrounded, _num = num;
if (arr.length > _num) {
surround = arr.slice(0, _num);
notSurrounded = arr.slice(_num, arr.length);
wrappedDom.push(surround);
// loop
wrap(notSurrounded, _num);
} else {
var remainder = _num - arr.length;
surround = arr;
for (var i = 0; i < remainder; i++) {
var emptydiv = document.createElement('div');
surround.push({});
}
wrappedDom.push(surround);
}
}
wrap(items, rows);
return wrappedDom;
}
var Gallery = angular.module('Gallery', []);
Gallery.controller('GalleryController', function ($scope) {
var gallery = this,
ArrayOfData = [
{ p: "value 1" }
, { p: "value 2" }
, { p: "value 3"}
, { p: "value 4"}
, { p: "value 5"}
, { p: "value 6"}
];
gallery.rows = wrapIntoRows(ArrayOfData);
$scope.GalleryController = this;
return $scope.CompanyController;
});
angular.bootstrap(document.body, [
"Gallery"
]);
相关文章:
- 包括angular 1.3.0项目上的angular bootstrap ui
- 如何在使用loopback REST API时更改gulp-angular项目的端口号
- jqueryui的轻量级替代品,可在angular项目中选择
- 如何在angular js中的select选项中获取所选项目id
- 让typescript与facebook登录为Angular 2项目工作
- 将ng2图表添加到Typescript/ Angular 2项目引用路径和.js文件的路径不正确
- 我想删除我正在做的angular项目中上传的照片
- Angular Grocery List-删除单个项目
- 如何删除Angular.js项目中的.NET
- 为什么像angular这样的项目有自己版本的通用函数
- Angular项目是使用Tomcat还是express
- 剑道网格:如何在与Angular一起使用时从组合框单元格模板中获取所选项目
- 在ASP.NET Web API 2项目中设置Angular路由
- Angular 2 和 NodeJS 项目设置
- Angular 1.3 中是否有更好的模式,可以在每次修改 ng-repeat 中的项目时调用函数
- 自定义 Angular 日期范围过滤器,以仅显示该日期范围内的项目
- 如何在 Angular 中使用拼接从列表中删除项目
- 高级结构化:环绕ng重复项目Angular.js
- 使用复选框选择项目Angular JS
- 新项目——Angular 1.4或2.0