stateLoadCallback
定義應如何以及從哪裡載入已儲存狀態的回呼函式。
描述
透過此回呼函式,您可以定義表格狀態的載入位置和方式。預設情況下,DataTables 會從 localStorage
或 sessionStrorage
載入,但若要進行更永久的儲存,您可以將狀態儲存在伺服器端的資料庫中。
在 DataTables 1.10.13 之前,此方法必須同步執行,也就是說,狀態將由該函式傳回。從 1.10.13 開始,可以透過 Ajax 或任何其他非同步方法非同步載入狀態,並執行回呼函式,傳入已載入的狀態。
為了保持向後相容性,仍然可以同步傳回狀態。若要使用回呼方法,只需不要從您的 stateLoadCallback
函式傳回值即可。請參閱下方的使用案例範例。
請注意,此回呼函式與 stateSaveCallback
搭配使用。此回呼函式會在重新載入表格時從儲存空間載入狀態,而 stateSaveCallback
則會儲存狀態。
類型
function stateLoadCallback( settings, callback )
- 參數
名稱 類型 選用 1 settings
否 DataTables 設定物件
2 callback
否 自 1.10.13 起:如果透過 Ajax 或其他非同步方法載入狀態資料,則在狀態資料準備就緒時應執行的回呼函式。如果要使用此選項,
stateLoadCallback
方法必須傳回undefined
(也就是說,不要傳回任何值)!- 傳回值
如果資料同步載入,則傳回值應為已載入的狀態(如果未載入任何資料,則為
null
)。如果資料將非同步載入(例如,透過 Ajax),則應傳回
undefined
(不要使用 return 語句!),並在載入狀態後呼叫回呼函式。請注意,此選項需要 DataTables 1.10.13 或更新版本。
範例
透過 Ajax 從伺服器載入狀態 (1.10.13 或更新版本)
new DataTable('#myTable', {
stateSave: true,
stateLoadCallback: function (settings, callback) {
$.ajax({
url: '/state_load',
dataType: 'json',
success: function (json) {
callback(json);
}
});
}
});
透過 Sjax 從伺服器載入狀態 (1.10.13 之前)
new DataTable('#myTable', {
stateSave: true,
stateLoadCallback: function (settings) {
var o;
// Send an Ajax request to the server to get the data. Note that
// this is a synchronous request since the data is expected back from the
// function
$.ajax({
url: '/state_load',
async: false,
dataType: 'json',
success: function (json) {
o = json;
}
});
return o;
}
});
相關
以下選項直接相關,在您的應用程式開發中也可能很有用。