如何在 smart table 中按小数到大数排序?
How to sort by smaller Numbers to Larger Numbers in smart table?
以下是我的代码,当用户点击第th个标题时ID
它将按 ID 号
排序
(1->2->3->-11->23)
但结果是 (1->11->2->23->3)
我希望结果是按小数到大数或大数到小数排序.....我不想在单个数字中加零.....
<div class='container' ng-app='smarttabledemo' ng-controller='smarttabledemo'>
<h3>Smart-Table</h3>
<table st-table='data' class='table'>
<thead>
<tr>
<th st-sort='ID'>ID</th>
<th st-sort='firstName'>First Name</th>
<th st-sort='lastName'>Last Name</th>
<th st-sort='phone'>Phone Number</th>
<th st-sort='hometown'>Hometown</th>
</tr>
</thead>
<tbody>
<tr st-select-row='row' ng-repeat='row in data'>
<td>{{row.ID}}</td>
<td>{{row.firstName}}</td>
<td>{{row.lastName}}</td>
<td>{{row.phone}}</td>
<td>{{row.hometown}}</td>
</tr>
</tbody>
</table>
</div>
我的json文件
$scope.data = [
{ ID: '3',firstName: 'Sam', lastName: 'Evans', phone: 'Not Provide', hometown: 'Anytown, ST' },
{ ID: '23',firstName: 'Saul', lastName: 'Evans', phone: '555-555-1234', hometown: 'Anytown, ST' },
{ ID: '1',firstName: 'Charlie', lastName: 'Anders', phone: '555-555-9876', hometown: 'Springfield, ST' },
{ ID: '2',firstName: 'Jessica', lastName: 'Cortez', phone: 'Not Provide', hometown: 'Springfield, ST' },
{ ID: '11',firstName: 'Amy', lastName: 'Wood', phone: '555-555-1348', hometown: 'Metroville, ST' },
]
下面是我的fiddle演示,谢谢
Fiddle
可以使用
$scope.data.sort((a, b) => a.ID - b.ID)
问题是您的 ID
是一个字符串,所以它排序的是 alpha 而不是数字。
将所有 ID
更改为一个数字,或者如果您不想做这项工作,请在分配数组后插入:
$scope.data.forEach(o=>o.ID=+o.ID)
https://jsfiddle.net/qwc5s6qt/6/
否则,请更新数据或您的 Angular getter 以获得自定义排序功能。
以下是我的代码,当用户点击第th个标题时ID
它将按 ID 号
排序
(1->2->3->-11->23)
但结果是 (1->11->2->23->3)
我希望结果是按小数到大数或大数到小数排序.....我不想在单个数字中加零.....
<div class='container' ng-app='smarttabledemo' ng-controller='smarttabledemo'>
<h3>Smart-Table</h3>
<table st-table='data' class='table'>
<thead>
<tr>
<th st-sort='ID'>ID</th>
<th st-sort='firstName'>First Name</th>
<th st-sort='lastName'>Last Name</th>
<th st-sort='phone'>Phone Number</th>
<th st-sort='hometown'>Hometown</th>
</tr>
</thead>
<tbody>
<tr st-select-row='row' ng-repeat='row in data'>
<td>{{row.ID}}</td>
<td>{{row.firstName}}</td>
<td>{{row.lastName}}</td>
<td>{{row.phone}}</td>
<td>{{row.hometown}}</td>
</tr>
</tbody>
</table>
</div>
我的json文件
$scope.data = [
{ ID: '3',firstName: 'Sam', lastName: 'Evans', phone: 'Not Provide', hometown: 'Anytown, ST' },
{ ID: '23',firstName: 'Saul', lastName: 'Evans', phone: '555-555-1234', hometown: 'Anytown, ST' },
{ ID: '1',firstName: 'Charlie', lastName: 'Anders', phone: '555-555-9876', hometown: 'Springfield, ST' },
{ ID: '2',firstName: 'Jessica', lastName: 'Cortez', phone: 'Not Provide', hometown: 'Springfield, ST' },
{ ID: '11',firstName: 'Amy', lastName: 'Wood', phone: '555-555-1348', hometown: 'Metroville, ST' },
]
下面是我的fiddle演示,谢谢
Fiddle
可以使用
$scope.data.sort((a, b) => a.ID - b.ID)
问题是您的 ID
是一个字符串,所以它排序的是 alpha 而不是数字。
将所有 ID
更改为一个数字,或者如果您不想做这项工作,请在分配数组后插入:
$scope.data.forEach(o=>o.ID=+o.ID)
https://jsfiddle.net/qwc5s6qt/6/
否则,请更新数据或您的 Angular getter 以获得自定义排序功能。