我使用的ng-table指令非常好但似乎没有适当的文档。 我无法找到一种按值排序的方法,而不是列值。例如,请考虑这是我从服务器获取的数据:
this.data = [ {'id': 1, 'gender': 'female', height: 170},
{'id': 2, 'gender': 'male', height: 180}
];
这是html:
<table dir='rtl' ng-table="service.tableParams">
<tr ng-repeat="row in service.data">
<td data-title="'gender'" sortable="'gender'">{{row.gender}}</td>
<td data-title="'name'">{{ service.nameOf[row.id] }}</td>
<td data-title="'height'" sortable="'height'">{{row.height}}</td>
</tr>
</table>
在js文件中我有一个从id到名称的地图:
nameOf = { 1: 'omer', 2: 'noam' };
我的问题是按名称列排序。我想按nameOf [row.id]排序,而不是id。 知道怎么做吗?
谢谢, 奥马尔。
答案 0 :(得分:0)
这应该有用;)
点击可排序按钮时,您必须自己定义排序方式。
getData: function($defer, params) {
var orderedData;
var sortByName = params.sorting().name
if(sortByName) {
orderedData = data.sort(function(a, b){
var nameA=service.nameOf[a.id].toLowerCase(), nameB=service.nameOf[b.id].toLowerCase()
if (nameA < nameB)
return -1
if (nameA > nameB)
return 1
return 0
});
if (sortByName == 'desc') {
orderedData = orderedData.reverse();
}
} else {
orderedData = params.sorting() ?
$filter('orderBy')(data, params.orderBy()) :
data;
}
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
示例:Plnkr