2017-03-24 29 views
1

在Rails應用程序我應該在DOM後運行已通過編輯加載

$(document).ready -> 
    # do some stuff 

它曾經是,我可以保證這些功能還隔着Turbolinks頁面刷新工作的CoffeeScript功能如下

$(document).on 'ready page:change', -> 
    # do some stuff 

我剛剛升級到Rails 5和Turbolinks 5,並且這些函數不再被正確調用。

一番搜索後,我已經試過許多變化,包括

$(document).on 'ready', -> 
$(document).ready -> 
$(document).on "turbolinks:load", -> 
$(document).on "page:load", -> 
$(document).on "page:change", -> 
# and as suggested by the [Turbolinks readme][1] 
document.addEventListener 'turbolinks:load', -> 

我自己也嘗試這些有和沒有安裝jquery.tubolinks,並與turbolinks兼容性補丁建議here

我必須錯過明顯的東西!在DOM加載頁面加載和Turbolink加載後,確保函數運行的正確語法是什麼?

回答

2

按照official turbolinks github documentation

在很多情況下,你可以簡單地調整你的代碼來監聽turbolinks:加載事件,這在初始頁面加載,每Turbolinks訪問後,再次觸發一次。

所以想這是純粹的JS:

document.addEventListener("turbolinks:load", function() { 
    // ... 
}) 

或像這樣的CoffeeScript:

$(document).on 'turbolinks:load', -> 
    # ... 
    return 
+0

感謝@馬克,我試圖讓事情與此事件的工作。儘管文檔聲明'turbolinks:load'事件是在「初始頁面加載並在每次Turbolinks訪問後再次觸發」觸發的,我認爲我的問題是該事件似乎只在每次Turbolink訪問後觸發。你知道爲什麼初始頁面加載不會觸發事件,或者如何調試? –

+0

@AndyHarvey有趣。好的,如果你在'$(document).on'turbolinks:load', - >'事件的第一行放置一個'console.log(「here」);'語句,然後刷新頁面,你會看到控制檯中的輸出?另外,控制檯中是否有任何錯誤? – Mark

相關問題