在Rails 5中使用sortable.js和turbolinks

4
我有一个Rails 5.1应用程序,其中我正在使用sortable.js库来自https://www.kryogenix.org/code/browser/sorttable/以便对表格进行一些简单的客户端排序。
我遇到了一个问题,在页面首次加载时,表格排序不起作用。(根本没有反应。)如果您手动重新加载页面(cmd-R或等效操作),它就会起作用。
经过一些搜索,我认为问题是由turbolinks引起的。像这样的帖子和其他帖子建议如何修改JS代码来解决它:Rails javascript only works after reload 引用该页面上的答案,您必须通过执行以下操作告诉turbolinks加载:
document.addEventListener("turbolinks:load", function() {
  my_func();
})

然而,我不是JS专家,所以对于在sortable.js代码中进行太多的修改有些犹豫。我正在寻求帮助,找到最少侵入性的解决问题的方法。


您的帖子中问题并不十分清晰。 - Kick Buttowski
请明确一点:问题是:是否有一种简单的方法可以修改sortable.js库,使其与turbolinks一起使用。谢谢! - Q A
1个回答

5

为了方便未来的谷歌用户,我提供一个可行的解决方案。

我需要做两件事才能使它正常工作:

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. Add this code somewhere else in the file. (I personally added it after the line that says "window.onload = sorttable.init;"

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接