对角度数据表中括号内的数字进行排序
Sorting of numbers within brackets in angular datatables
我使用Angular数据表来根据Web服务响应填充我的表。我的Web服务返回一个类似的json
[
{
"id": 1,
"name" : "abc",
"count": "(20)"
},
{
"id": 2,
"name" : "abc2",
"count": "20"
},
{
"id": 3,
"name" : "abc3",
"count": "(30)"
}
]
我能够将JSON数组绑定到下表中的$scope变量
<table datatable="ng" dt-options="dtOptions" dt-column-defs="dtColumnDefs">
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>count</th>
</tr>
</thead>
<tbody ng-repeat= "item in items">
<td> {{item.id}} </td>
<td> {{item.name}} </td>
<td> {{item.count}} </td>
</tbody>
</table>
id和name列按升序和降序正确排序,但count栏不按数字排序。相反,它在排序和排序时考虑了"("。我希望计数列的排序结果是
在上升中
20
(20)
(30)
现在我得到了升序
(20)
(30)
20
有人能提出我需要应用的逻辑是什么吗?
您可以使用列渲染函数。当任何dataTables需要count
列的值,并且希望将该值用于sort
列时,则返回一个包含列数据的数字部分的键入数字:
$scope.dtColumnDefs = [
DTColumnDefBuilder
.newColumnDef(2)
.withOption('type', 'number')
.renderWith(function(data, type, full) {
if (type == 'sort') {
var value = data.match(/'d+/);
if (value == null) {
return 0
} else {
value = parseFloat(value[0]);
}
return value.toString().length != data.length ? value+0.0001 : value;
}
return data
})
];
在这里,我将0.0001
添加到包含非法字符的值中,如(
,这样我们可以确保值以正确的顺序显示,即所有20
在所有(20)
之前(或之后)被分组为。
演示->http://plnkr.co/edit/Zyp0yphHfxnElEjMMOh2?p=preview
注意:我会迭代<tr>
的,而不是<tbody>
:
<tbody>
<tr ng-repeat="item in items">
<td> {{item.id}} </td>
<td> {{item.name}} </td>
<td> {{item.count}} </td>
</tr>
</tbody>
相关文章:
- lodash-sortby,如何将数字排序晚于字母
- 使用 AngularJS 按键对对象进行数字排序
- 按数字排序列表,然后使用 jQuery 按字母顺序排序
- 在 JavaScript 中对数组进行字母数字排序
- 根据数字排序顺序更新自动重新排列HTML列表
- 如何在Javascript中的表分类器中对表列数据进行字母数字排序
- 如何对数据表中的超链接进行数字排序
- 将两个模型与一个模型传递到主干比较器,并进行字母数字排序
- 用字母和数字排序多维数组
- 如何按对象字符串值之一对对象数组进行数字排序
- 数字排序,当数字相同时保持alpha顺序
- 如何用jquery对数据表进行数字排序?
- 将JavaScript数组与字符串和数字排序为数字数组和字符串数组
- 排序数组对象与点,字母,数字.我能按数字排序,但混合值很难排序.不确定是否有可能做对
- 在数字排序期间保持精度
- 用于解释整个整数而不是字符的字母数字排序算法- Javascript
- 对主干中的集合进行数字排序
- 用于数字排序的Javascript验证
- 如何对本地存储中的嵌套键进行数字排序
- 为什么会这样;.sort()”;在JavaScript中,将难以置信的小数字排序为难以置信的大数字