在启用turbolink的情况下重新渲染特定的js文件

Nay*_*ish 6 javascript gem ruby-on-rails turbolinks ruby-on-rails-4

我正在使用Rails 4并想使用内置Turbolink宝石.我很满意它所做的一切,除了我希望它在每个页面请求时重新加载一个js文件.

换句话说,我想要一个特定的js文件来忽略turbolinks,我该怎么做呢?

Zol*_*tan 7

您可以使用turbolinks中的'page:load'事件将初始化函数连接到它.当turbolinks完全自动加载您的新页面时,它将始终被调用.

function initialize() {
  //js code what you want run always
}

$(document).ready(initialize);
$(document).on('page:load', initialize);
Run Code Online (Sandbox Code Playgroud)

如果你经常使用jQuery,那么在你的Gemfile中安装它会很有用

gem 'jquery-turbolinks'
Run Code Online (Sandbox Code Playgroud)

和你的application.js

//= require jquery
//= require jquery.turbolinks
Run Code Online (Sandbox Code Playgroud)

Turbolinks还有另外两个有用的事件:

page:fetch //when new page begin to download
page:change //when the page has changed over
Run Code Online (Sandbox Code Playgroud)

  • 正确,只是想让人们意识到.似乎没有被广泛提及的东西.我写了一个快速脚本,自动解除在加载下一页之前添加的任何事件的绑定. (2认同)