繁体   English   中英

在Rails 5中使用sortable.js和Turbolinks

[英]Using sortable.js and turbolinks in Rails 5

我有一个Rails 5.1应用程序,其中使用了https://www.kryogenix.org/code/browser/sorttable/中的sortable.js库,以便对表进行一些简单的客户端排序。

我遇到一个问题,即页面首次加载时,表排序不起作用。 (它根本没有响应。)如果您随后手动重新加载页面(cmd-R或等效页面),则它确实可以工作。

经过一番搜索,我相信问题是由turbolinks引起的。 像这样的帖子,其他的都建议了如何修改JS代码来解决它: Rails javascript仅在重新加载后才有效

要引用该页面上的答案,您必须通过执行以下操作告诉turbolinks加载:

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

但是,我不是JS专家,所以有点讨厌在sortable.js代码中闲逛。 我正在寻求有关以最小侵入性方式解决问题的帮助。

为将来的Google员工发布有效的解决方案。

我必须做两件事才能使它起作用:

1:注释掉init函数顶部的行,以防止其多次运行。 因此,我在sorttable.js中的init函数的顶部看起来像这样:

    sorttable = {
      init: function() {
        // Had to comment these top to out to get things to work with turbolinks
        // quit if this function has already been called
        //if (arguments.callee.done) return;
        // flag this function so we don't do the same thing twice
        //arguments.callee.done = true
  1. 将此代码添加到文件中的其他位置。 (我个人在“ window.onload = sorttable.init;”这一行之后添加了它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM