Turbolinks倍增绑定

Kom*_*mbo 14 ruby-on-rails turbolinks ruby-on-rails-4

我有一个问题,当通过浏览器使用后退/前进按钮时,Turbolinks会多次绑定事件.我有一个简单的脚本,以确保它不是我编写document.on()事件的方式,所以...

$(document).on 'page:load', ->
  alert 'Loaded'
Run Code Online (Sandbox Code Playgroud)

单击链接时会触发一次.单击向后或向前(或另一个Turbolink链接)它将触发两次.下次它会发射很多次而且会不断增长.这是我在jQuery和Turbolinks之外的清单文件中唯一拥有的东西.你如何防止Turbolinks重复事件绑定?

Kom*_*mbo 16

这个问题似乎包括我身体末端的javascript_tag,而不是头部.在正文中,每个Turbolinks页面都会删除/添加Javascript:更改以便绑定不断堆积.


mwa*_*her 6

这是有道理的 - 如果你使用jquery-turbolinks gem会发生同样的问题,因为它会导致你的jQuery文档就绪函数中的任何代码在每个页面加载时运行.由于文档对象永远不会使用Turbolinks重新初始化,因此会导致冗余绑定.这种情况的解决方案是将$(document).on绑定放在jQuery ready函数之外,这样就不会在每个页面加载时执行它们.