【发布时间】:2016-10-28 04:07:08
【问题描述】:
我想按属性类名称过滤数据表。这是一些图像。这个想法是,单击表格标题附近的星形图标以仅显示最喜欢的条目。
我已经尝试了一些方法来实现这一点,但它不起作用。据我了解,我应该为标题中的星形图标定义一些 keyup-listener 。这是我现在使用的一些代码:
$scope.dtInstanceCallback = function (dtInstance) {
var table = dtInstance.DataTable;
// Apply the search
table.columns().eq(0).each(function (colIdx) {
if ($('i', table.column(colIdx).header())[0] != undefined) {
$('i', table.column(colIdx).header()).on('keyup', function () {
if ($scope.showFavorites) {
table
.column(colIdx)
.search('fa-star', false, false, true)
.draw();
} else {
//here drop the search by the star value drop search
}
});
}
});
};
$scope.showFavorites 只是一个包含true 或false 的变量。当我ng-click 星形图标时,我会切换它的值。它最初初始化为false:
$scope.showFavoriteOnly = function () {
$scope.showFavorites = !$scope.showFavorites;
};
一个小问题是不使用智能搜索,因为两个图标(满星和空星)仅通过字母区分:fa-star 和 fa-star-o。
.search 函数取自 https://stackoverflow.com/a/23931504/3402092。
小编辑:我将该列标记为搜索类型字符串:
DTColumnDefBuilder.newColumnDef(0).withOption('orderDataType', 'fa-classes').withOption('sType', 'string')
所以我可以使用搜索输入找到fa-star-o。
【问题讨论】:
标签: angularjs datatables angular-datatables