2015-06-05 90 views
7

也有類似的問題,但它們都似乎是由身體中的JavaScript標記引起的,在我的情況下,我的頭部是。我也不能移動頁面換頁塊外的我的js(我認爲我至少不能)rails 4 turbolinks多個綁定

我遵循rails約定,讓每個文件中的所有js根據資源並將它們包含在應用程序中。 JS。

我的JS在我的佈局文件的頭部:

<!DOCTYPE html> 
<html> 
<head> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 

我的文件都遵循軌道文檔中的建議,使用頁面更改事件:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#turbolinks

下面是一個例子js文件( report.js - 我用咖啡腳本)

load_reports = -> 
     table = $('#reports').DataTable() 
     company_input_field = $('#rc-cn-st-input') 
     company_input_field.on 'keyup change', -> 
     table.column(2).search(@value).draw() 
     return 

$(document).on('page:change', load_reports) 

這一切的偉大工程,直到我用瀏覽器的後退按鈕。一旦我這樣做了,每次點擊都會觸發2次事件。我該如何解決這個問題,遵循什麼規定?

在其他情況下,我提出我的js的頁面變化外塊,做:

$(document).on 'click', 'td.details-control', -> 
    # do something 

但是,這似乎並沒有在上述情況中的實際,我引用了jQuery數據表僅在一個頁面上,並且只有當我在該頁面上時才需要進行設置。

我看過.off()函數,但無法弄清楚如何在這種情況下使用它,我試過的所有東西似乎都是刪除活動偵聽器或失敗。

回答

1

嘗試使用

$(document).on('turbolinks:load', load_reports) 

代替

$(document).on('page:change', load_reports). 

這是對我工作,只加載頁面一次。

順便說一句,這是用於軌4.2和以上https://stackoverflow.com/a/38457941/7252292