每个请求都会获取JavaScript资产

时间:2016-02-13 20:59:11

标签: javascript ruby-on-rails coffeescript turbolinks

我怀疑我要描述的问题是由Turbolinks造成的,但我不知道如何。我正在使用Rails 4,Turbolinks 3.0和jquery.turbolinks。假设有这个CoffeeScript:

alertClicked = ->
  alert 'Clicked'

$ ->
  $(document).on 'click', '.foo', -> alertClicked()

当我第一次加载页面并点击“.foo”时,我收到一条提醒。如果我访问链接并再次单击“.foo”,我现在会收到两个警报。另一个链接访问导致三个警报等。我想,Turbolinks会在每次请求时获取CoffeeScript资产并累积,以便多次执行相同的脚本。但是,至少在Chrome中,当我去开发工具 - >来源我只看到文件的单个副本。

有谁知道问题可能是什么?

1 个答案:

答案 0 :(得分:0)

O.K。,以及jquery.turbolinks README points out

  

您应该在$(function())块之外绑定您的事件。这将确保您的活动只会被绑定一次。

遵循这个建议,我的例子如下:

alertClicked = ->
  alert 'Clicked'

$(document).on 'click', '.foo', -> alertClicked()

一切都按预期工作。