次の機能を追加したいdataTable
URLで追跡する必要があるリリースのリストを表すオブジェクトがページにあります/releases
- の場合
/releases?query=<query>
、dataTable
は提供されたクエリで初期化されます query
ユーザーが検索語を変更すると、パラメーターが更新されます- ブラウザの戻るボタンと進むボタンは適切なクエリを実行します
これまでのところ、最初の2つは実行できますが、イベントをリッスンするとpopstate
、テーブルを再描画すると、pushState
それを防ぐ方法がわかりません。これまでの私のコードは次のとおりです。
$(document).ready(function(){
var prevSearch;
var table = $('#releases').dataTable({
"bJQueryUI" : true,
"sPaginationType" : "full_numbers",
"iDisplayLength" : 50,
"oSearch": {"sSearch": '#{params[:query]}'},
"fnDrawCallback": function(oSettings) {
var curSearch = oSettings.oPreviousSearch.sSearch;
if (!prevSearch) {
prevSearch = curSearch;
} else if (curSearch != prevSearch) {
console.log("changed to: " + curSearch);
history.pushState({query: curSearch}, "title", "releases?query=" + curSearch);
prevSearch = curSearch;
}
}
});
window.addEventListener("popstate", function(e) {
if (e.state) {
table.fnFilter(e.state.query);
}
});
});
rails
私はバックエンドを使用しており、これはページで提供されているインラインJavaScriptであることに注意してください。