当前位置: 首页 > 知识库问答 >
问题:

使用turbolink 5.2时,Javascript方法触发两次。0

石正奇
2023-03-14

问题:

我有一个基于Spree 3.7和Rails 5.2构建的电子商务应用程序,现在我面临turbolink(5.2.0版)问题,在这个问题中,我已经实现了用于向购物车添加项目的javascript,但js方法触发了两次,类似的项目两次被添加到购物车中。

我在标题中加入了以下js

<script>
  <%= javascript_include_tag 'spree/frontend/all' %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</script>

我已经尝试了数据涡轮链接轨道:真/假,但我的问题解决时删除

我从《https://github.com/turbolinks/turbolink》中读到涡轮链接。根据我turbolink是加载javascript方法两次。

对如何解决这个问题有什么建议吗?

评论后这里是我的申请。js文件

// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require activestorage
//= require turbolinks
//= require cable
//= require jquery-ui/widgets/sortable

//= require wishlist
//= require product
//= require cart

共有2个答案

臧烨烁
2023-03-14

所以基本上我能够解决这个问题,根据Turbolink,我们的javascript应该包装在

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

我们的spree函数如addToCartForm等可在$(文档)上运行。ready()

所以我重写了这些函数,并包裹在turbolink: load中,现在一切正常。

慕金林
2023-03-14

根据您的评论,您可能在本地有两个版本的编译资产。尝试运行rake assets:clobber清除额外的资产。

 类似资料:
  • 我找到了其他相关的问题,但没有一个答案实际上解决了我的问题。这个按钮在IE上很好用,但在Chrome上不行。我尝试移除span元素,将按钮放在任何其他标记之外,但仍然触发了两次。这个temple扩展了一个'base.html'文件,代码位于'main'元素中。 HTML: jQuery:

  • 问题内容: 我有一个ajax电话 现在,这里是10分钟后收到的答复。因此,ajax调用被多次调用。为什么会发生这种情况/我们如何确保ajax调用仅被调用一次? 问题答案: 禁用按钮的另一种方法是使用.one()方法,并在回调后重新绑定事件处理程序:

  • 问题内容: 出于某种原因,每当我在循环使用时按一下该键,此后的代码将立即执行两次。如果不在循环中,它将执行一次!为什么是这样? 这是一个测试它的代码片段: 问题答案: 发生这种情况的原因是,当您按Enter键时,System.in.read()将注册两个字符。应该将其用作扫描仪的更复杂版本,而不是使用扫描仪来执行Scanner.nextLine()或Scanner.nextInt()来返回字符串或

  • 问题内容: 我有以下代码,但我的问题是该事件被触发了两次。我不知道是什么原因造成的。我怀疑是由供应商前缀引起的,但并非如此。即使我只离开,它仍然会开火两次。 CSS JS 问题答案: 对于您和,每个已转换的属性都会触发。 您可以在访问与事件关联的属性。 没有“ transition s end”事件,因此您可能需要一些技巧,例如仅过滤其中一个过渡属性的回调处理。例如: ps。没有浏览器会触发该事件

  • 问题内容: 我使用的是ng-click,将其应用于SPAN标签时会触发两次。 HTML 控制器 它应该只发射一次。我如何找到这种情况的发生原因以及如何解决? 问题答案: 您提供的代码不会两次触发该事件: http://jsfiddle.net/kNL6E/(单击) 也许您两次包含Angular?如果执行此操作,则会收到两个警报,如下所示: http://jsfiddle.net/kNL6E/1/

  • 我制作了jbutton并向其添加了ActionListner,但public void actionPerformed(ActionEvent e){}中的代码执行了两次。它打印两次test,而不是只打印一次 这里是完整的代码,以防这是没有意义的。看起来问题是添加两个动作监听器到我的按钮。“if(testbut.GetActionListeners().length<1))testbut.AddA