我有一组这样的数据:
$scope.items = [
{ model:"A", price: 100, quantity: 30},
{ model:"B", price: 90, quantity: 20 },
{ model:"C", price: 80, quantity: 200 },
{ model:"D", price: 70, quantity: 20 },
{ model:"E", price: 60, quantity: 100 },
{ model:"F", price: 50, quantity: 70 },
{ model:"G", price: 40, quantity: 230 },
{ model:"H", price: 30, quantity: 50 }
];
我想使用ng-repeat,然后将其分成4组,所以输出将是这样的
<ul>
<li> model:"A", price: 100, quantity: 30</li>
<li> model:"B", price: 90, quantity: 20</li>
<li> model:"C", price: 80, quantity: 200</li>
<li> model:"D", price: 70, quantity: 20</li>
</ul>
<ul>
<li> model:"E", price: 60, quantity: 100</li>
<li> model:"F", price: 50, quantity: 70</li>
<li> model:"G", price: 40, quantity: 230</li>
<li> model:"H", price: 30, quantity: 50</li>
</ul>
然后可以按价格和数量进行排序。我尝试过
<li ng-repeat="x in items.slice(0,4)">
但是我可以在每个组中进行排序。另外,我正在寻找一种适用于任何给定数量元素的解决方案。当您事先知道将要拥有的物品数量时,此提议的解决方案将ng-repeat物品分组即可使用。
PS:我试图不使用分页指令,因为它使我与其他脚本发生冲突。
提前致谢!
使用lodash(_。sortBy和_.chunk)创建了一个示例,它不是最好的,但总比没有好:
https://jsfiddle.net/1LLf7gz6/
您还可以通过删除以下内容来缩短:
$scope.itemssorted = _.sortBy($scope.items, 'price');
并添加以下内容:
$scope.itemschunk = _.chunk(_.sortBy($scope.items, 'price'), 4);
jsfiddle(新):https ://jsfiddle.net/py5hs1yj/
带有排序按钮的jsfiddle示例:https://jsfiddle.net/Ldcpx35w/
说明文件:
._sortBy()-> https://lodash.com/docs#sortBy ._chunk()-> https://lodash.com/docs#chunk
jsfiddle代码:
脚本:
var app = angular.module('anExample', []);
app.controller('theController', ['$scope',function($scope){
$scope.test = 'this is a test';
$scope.items = [
{ model:"A", price: 100, quantity: 30},
{ model:"B", price: 90, quantity: 20 },
{ model:"C", price: 80, quantity: 200 },
{ model:"D", price: 70, quantity: 20 },
{ model:"E", price: 60, quantity: 100 },
{ model:"F", price: 50, quantity: 70 },
{ model:"G", price: 40, quantity: 230 },
{ model:"H", price: 30, quantity: 50 }
];
//$scope.itemssorted = _.sortBy($scope.items, 'price');
//example: reverse array
//$scope.itemssorted = _.sortBy($scope.items, 'price').reverse();
$scope.itemschunk = _.chunk(_.sortBy($scope.items, 'price'), 4);
console.log("items: ", $scope.items);
console.log("items chunked: ", $scope.itemschunk);
//console.log("items sorted: ", $scope.itemssorted);
}]);
HTML:
<div ng-app="anExample" ng-controller="theController">
Hello, {{test}}!
<ul ng-repeat="group in itemschunk">
<li ng-repeat="items in group"> Model: {{items.model}}, price: {{items.price}}, quantity: {{items.quantity}}</li>
</ul>
</div>
结果:
Hello, this is a test!
Model: H, price: 30, quantity: 50
Model: G, price: 40, quantity: 230
Model: F, price: 50, quantity: 70
Model: E, price: 60, quantity: 100
Model: D, price: 70, quantity: 20
Model: C, price: 80, quantity: 200
Model: B, price: 90, quantity: 20
Model: A, price: 100, quantity: 30
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句