[英]How to enable `sorttable.js` on Rails4 with turbolinks
sorttable.js
希望發生的事情 :一個重定向是否渲染,或者只需點擊在應用了新的一頁,用類中的任何表sorttable
(我編輯它在原來的JS)應通過列標題排序。
實際發生的事情 :我在聯系頁面上。 我點擊刷新,JS中的記錄器語句出現了。 該插件按預期工作。 如果我導航到Home,然后返回到Contacts,該文件仍會列在頁面源中,但不會顯示任何記錄器語句。 該插件不起作用。
我們的application.js
讀取如下:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery_nested_form
//= require bootstrap
//= require sorttable
//= require_directory .
//= require autocomplete-rails
//= require turbolinks
//= require bootstrap-switch
每頁或完全禁用Turbolink對我們來說不是一個解決方案。 如果文件不能與turbolinks一起使用,我願意使用寶石; 但是,gem應該為應用程序添加一些代碼。 我們寧願沒有專門的類來選擇要排序的列。 此外,一些待排序的列不是來自ActiveRecord(如1個單元中的2個屬性)。
經過大量調試后,我弄清楚為什么turbolinks不喜歡sorttable.js
。 JS文件包含觸發器(一些基於瀏覽器類型)以在文檔加載時啟動sorttable。 這樣的事件監聽器與turbolinks不兼容。 我為完成這項工作所做的工作如下。
將vendor/assets/javascripts/sorttable.js
移至app/views/shared/js/_sorttable.html.haml
使用以下命令對新文件進行前綴:javascript
( %script{languauge: "javascript"}
),並縮進所有后續行2個空格
從application.js
刪除sorttable
在所有相關頁面的頂部,添加以下代碼塊:
= render 'shared/js/sorttable' %script $(document).on("page:change", sorttable.init)
有關代碼示例和進一步說明,請參閱此要點 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.