Я хотел бы отфильтровать таблицу с данными по имени класса атрибута. Вот какое-то изображение. Идея состоит в том, чтобы щелкнуть значок звездочки рядом с заголовком таблицы, чтобы отобразить только избранные записи.
Я уже пробовал несколько вариантов, как этого добиться, но это не работает. Как я понял, мне нужно определить какой-нибудь 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
.