角度数据表:对非文本数据进行排序

时间:2016-06-17 19:48:53

标签: angular-datatables

有没有办法为包含非文本数据的列创建自定义排序?

这是一张快照:

enter image description here

我想按图标符号排序。

P.S。这两个图标都使用ng-if和数据集中的布尔值显示。

编辑:我使用Angular方式显示数据。

<table datatable="ng" dt-options="dtOptionsLoginHistory" dt-column-defs="dtColumnDefsLoginHistory"
               class="table table-striped row-border hover"
               width="100%">
            <thead>
            <tr>
                <th>Success</th>
            </tr>
            </thead>
            <tbody>
            <tr ng-repeat="entry in entries">
                <td style="width: 10%;">
                    <i ng-if="!entry.failed" class="fa fa-check" style="color: green;"></i>
                    <i ng-if="entry.failed" class="fa fa-times" style="color: red;"></i>
                </td>
            </tr>
            </tbody>
        </table>

2 个答案:

答案 0 :(得分:2)

有几种不同的方法可以达到你想要的效果。考虑到您的设置,我认为最简单的方法是创建一个特殊的orderType,根据fa-*要素呈现的<i>类返回一个值:

$.fn.dataTable.ext.order['fa-classes'] = function(settings, col)  {
  return this.api().column( col, {order:'index'} ).nodes().map(function(td, i) {
    return $('i', td).hasClass('fa-check') ? '1' : '0';
  })
} 

将提供所有<i class="fa fa-check">订单1,其他任何0。这也可能是switch { .. }返回多个不同的订单值。像这样使用它:

$scope.dtColumnDefsLoginHistory = [
   DTColumnDefBuilder.newColumnDef(0).withOption('orderDataType', 'fa-classes')
];  

小型演示 - &gt;的 http://plnkr.co/edit/8S5f2MR331CiNBYYfDQf?p=preview

答案 1 :(得分:0)

添加orderBy过滤器:

  <tr ng-repeat="entry in entries orderBy : 'failed'  "> 
    <td style="width: 10%;">
       <i ng-if="!entry.failed" class="fa fa-check" style="color: green;"></i>
       <i ng-if="entry.failed" class="fa fa-times" style="color: red;"></i> 
    </td>
</tr>