有什么方法可以使用<;选择>;按AngularJS排序行的步骤
我有从数据库返回并显示在屏幕上的行:有什么方法可以使用<;选择>;按AngularJS排序行的步骤,angularjs,Angularjs,我有从数据库返回并显示在屏幕上的行: <tr data-ng-repeat="row in grid.data"> 行中有“id”、“number”、“text”等列 有人举过我如何创建一个下拉列表的例子吗?该下拉列表允许我选择这三列中的哪一列来对返回的行进行排序 首先为订单方向定义范围变量,并通过特殊功能访问数据数组: <div ng-app ng-controller="Ctr"> <select ng-model="orderBy">
<tr data-ng-repeat="row in grid.data">
行中有“id”、“number”、“text”等列
有人举过我如何创建一个下拉列表的例子吗?该下拉列表允许我选择这三列中的哪一列来对返回的行进行排序 首先为订单方向定义范围变量,并通过特殊功能访问数据数组:
<div ng-app ng-controller="Ctr">
<select ng-model="orderBy">
<option>Id</option>
<option>Name</option>
</select>
<ul data-ng-repeat="row in orderData(orderBy)">
<li>{{row.Id}}: {{row.Name}}</li>
</ul>
</div>
身份证件
名称
- {{row.Id}}:{{row.Name}
示例控制器如下所示:
function Ctr($scope) {
// Get your data:
// (think it can be hidden in context as local variable to not to expose in
// outside because you'll access the data via special function)
var data = [
{Id: 1, Name: 'C'},
{Id: 2, Name: 'B'},
{Id: 3, Name: 'A'}
];
// Set default ordering field
$scope.orderBy = 'Id';
// Ordering function accessed from UI
$scope.orderData = function(orderBy) {
return data.sort(function(a, b) {
var valueA = a[orderBy];
var valueB = b[orderBy];
return (valueA < valueB) ? -1 : (valueA > valueB) ? 1 : 0;
});
};
}
功能中心($scope){
//获取您的数据:
//(认为它可以作为局部变量隐藏在上下文中,以避免在上下文中公开。)
//外部,因为您将通过特殊功能访问数据)
风险值数据=[
{Id:1,名称:'C'},
{Id:2,名称:'B'},
{Id:3,名称:'A'}
];
//设置默认排序字段
$scope.orderBy='Id';
//从UI访问的排序函数
$scope.orderData=函数(orderBy){
返回数据。排序(函数(a,b){
var valueA=a[orderBy];
var valueB=b[orderBy];
返回值(valueAvalueB)?1:0;
});
};
}
并在控制器的函数中对数据进行排序
这其实很简单,试试: html:
<body ng-controller="AppCtrl">
Sort by: <select ng-model="sortField" ng-options="o.label for o in fields"></select>
<label>
<input type="checkbox" ng-model="inverse"> inverse
</label>
<hr>
<table>
<tr data-ng-repeat="row in grid.data|orderBy:sortField.key:inverse">
<td>{{row.id}}</td>
<td>{{row.number}}</td>
<td>{{row.text}}</td>
</tr>
</table>
</body>
app.controller('AppCtrl', ['$scope', function($scope) {
$scope.fields = [
{ label: 'ID', key: 'id' },
{ label: 'Nr.', key: 'number' },
{ label: 'Text', key: 'text' }
];
$scope.sortField = $scope.fields[2];
$scope.inverse = false;
$scope.grid = {
data: [
{ id: 1, number: 4, text: 'A' },
{ id: 2, number: 3, text: 'E' },
{ id: 3, number: 2, text: 'B' },
{ id: 4, number: 1, text: 'D' },
{ id: 5, number: 0, text: 'C' }
]
};
}]);
演示:但是如果我想在运行中更改顺序,这会起作用吗?@Alan,请看我粘贴的示例,当然会起作用,因为这是Angularjs的开发目的:)非常感谢。我喜欢你的解决方案。