データテーブルを属性クラス名でフィルタリングしたいと思います。ここにいくつかの画像があります。アイデアは、テーブルヘッダーの近くにある星のアイコンをクリックして、好きなエントリだけを表示することです。角度データテーブル - 特定のHTMLクラス値を検索する
私はすでにこれを達成するためにどのようにいくつかのオプションを試してみましたが、それは動作しません。私が理解したように、ヘッダーの星アイコンの一部をkeyup
として定義する必要があります。ここで私は今で使用されるいくつかのコードされています
$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
を見つけるために検索入力を使用することができます。
@Sirionは、答えを受け入れてくれてありがとう!それはカスタムフィルターでは長時間の撮影でしたが、もっと気に入ると思います。たとえば、日付範囲の間に行をフィルタリングして、その範囲内で検索したり、特定の種類の行をフィルタリングしたりすることができます。 – davidkonrad
あなたのソリューションは動作しますが、私の場合は動作しません。私はDBからアイコンをHTMLとして読み込み、 'data'を調べると、アイコンの列は大きな空の文字列になります。だから私は別の方法で列にアクセスすることに決めました。しかし、どういうわけか、私はフィルターと並べ替えの作業を一緒に取得することはできません。私は私のケースでプランナーを作った、それを見てもらえますか? http://plnkr.co/edit/PRu8bZI0vO1ocgvjW9oA?p=preview。どうにかしてこのシンプルな機能性は、すでに多くの時間を費やしていました。 –
@シリトン、明日まで待つことができますか?ここDKでは03.16で、アルコールは飲んでいます(DKで夏です)。私は明日(日曜日)それを調べます – davidkonrad