DataTables.Type
DataTables 資料類型物件。
描述
DataTables 資料類型物件包含有關它應如何處理不同資料類型的信息。
使用 Typescript 定義,物件具有以下結構
interface DataTable.Type {
className?: string;
detect: (data: any) => (boolean | null) | {
oneOf: (data: any) => boolean,
allOf: (data: any) => boolean,
init: (settings: Object, column: Object, index: number) => boolean
};
order: {
pre?: (data: any) => any;
asc?: (a: any, b: any) => number;
desc?: (a: any, b: any) => number;
};
render?: (data: any, type: string, row: any) => string | number | Node;
search?: (data: any) => string;
}
屬性
以下屬性可用於資料類型物件
className
類別名稱屬性用於自動將類別指派給符合此資料類型的欄位。這可以用於樣式變更或排版。例如,內建的 num
資料類型使用 dt-right
作為類別名稱,將數值資料對齊到右側。
detect
這是 DataTables 如何判斷資料類型。從 DataTables 2.1 開始,它可以採用兩種形式,一種是具有多個參數的物件,允許精細調整類型偵測,另一種是單一函式。
我們先討論單一函式 (DataTables 2.0 以上) - 該函式將檢查傳入的資料,以判斷它是否符合預期的資料類型,如果是,則會返回 true
。如果資料不符合預期的格式,則返回 false
。幾乎任何資料類型都可以傳入此函式,因此必須小心 - 不能僅假設它會是字串。
舉例來說,請考慮以下偵測 IPv4 位址的方法
function (data) {
return typeof data === 'string' && data.match(/^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/))
? 'ipv4'
: null;
}
從 DataTables 2.1 開始,也可以使用具有 oneOf
、allOf
和 init
函式的物件
allOf
- 這與上面的函式相同。欄位中的所有資料點都必須通過此函式,才允許欄位採用此資料類型。oneOf
- 欄位中至少有一個資料點必須通過此函式,才允許欄位採用此資料類型。init
- 在類型偵測開始時執行,以查看是否可以根據欄位(而非資料)的屬性為欄位指派資料類型。
order
DataTables 中的排序是由為類型定義的 pre
、asc
和 desc
函式完成的
pre
- 預先格式化方法。用於將格式化的資料轉換為可排序的資料asc
- 升序排序方法desc
- 降序排序方法
這些函式都是可選的,您可以使用以下組合之一
- 僅
pre
- 排序將使用 DataTables 的預設排序在返回的資料上完成。 - 僅
asc
和desc
- 標準 Javascript 排序函式。 - 全部三個 - 預先格式化的資料將傳遞到自訂排序方法中。
強烈建議您提供 pre
方法,如果您需要將資料從原始資料類型轉換為排序方法將使用的類型。這是因為 pre
函式在每次資料點排序時僅執行一次,而 asc
和 desc
排序方法可能在每次資料點排序時被呼叫多次。
舉例來說,請考慮以下排序資料類型定義,它用於對沒有 the
前綴的資料進行排序(常用於書籍和電影)。在這裡,我們只需要使用 pre
解格式器(大多數排序定義都是這種情況)
function (data) {
return data.replace(/^ the/i, '');
}
render
渲染函式可以用於將資料轉換成不同形式,以進行不同的正交動作,但特別適用於顯示格式化。如果尚未為欄位提供渲染函式(columns.render
),則此處定義的函式將自動應用於資料類型。
當您事先不知道輸入資料的資料類型,並且您想要根據最終使用者的本地化偏好來格式化資料時,這特別有用。例如,在美國,日期應為 M/D/Y 格式,而在世界其他大部分地區則為 D/M/Y 格式。
以下兩個指令將內建的渲染器指派給 date
和 num
(數字)資料類型,以便在判斷欄位符合該類型時自動渲染。它們會自動以本地化的方式為最終使用者格式化資料
DataTable.type('date', 'render', DataTable.render.date());
DataTable.type('num', 'render', DataTable.render.number());
search
搜尋函式用於將輸入資料轉換為字串,當 DataTables 為最終使用者執行任何搜尋時,將會比對該字串。以這種方式來看,它與 pre
排序解格式器非常相似,因為它會預先處理資料。
這樣做可能很有用,可以去除不應搜尋的資料,例如 HTML 標籤,或者可以用於為搜尋詞提供冗餘,例如使用者可能會搜尋顯示的帶有或不帶有空格的電話號碼。以下範例示範了這一點
function (data) {
// Return original data and also remove any non-numeric data, so
// '555-2368' would be returned as '555-2368 5552368' allowing
// either form to be searched for
return data + ' ' + data.replace(/[^\d]/g, '');
}
進一步資訊
使用以下資源進一步探索 DataTables 資料類型
- 資料類型文件
DataTable.type()
- 取得/設定特定資料類型的詳細資料。DataTable.types()
- 取得已註冊資料類型的清單。