Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在带有TurboLink的Rails4上启用'sorttable.js' Rails 4.2.0,TurboLink(2.5.3) jquery rails(4.0.3)、jquery ui rails(5.0.3) 在Chrome、Firefox和IE上使用的应用程序_Javascript_Ruby On Rails_Ruby On Rails 4_Turbolinks_Sorttable.js - Fatal编程技术网

Javascript 如何在带有TurboLink的Rails4上启用'sorttable.js' Rails 4.2.0,TurboLink(2.5.3) jquery rails(4.0.3)、jquery ui rails(5.0.3) 在Chrome、Firefox和IE上使用的应用程序

Javascript 如何在带有TurboLink的Rails4上启用'sorttable.js' Rails 4.2.0,TurboLink(2.5.3) jquery rails(4.0.3)、jquery ui rails(5.0.3) 在Chrome、Firefox和IE上使用的应用程序,javascript,ruby-on-rails,ruby-on-rails-4,turbolinks,sorttable.js,Javascript,Ruby On Rails,Ruby On Rails 4,Turbolinks,Sorttable.js,应该发生什么:无论是重定向、渲染,还是仅仅单击应用程序中的新页面,任何具有类可排序的表(我在原始JS中编辑过)都应该按列标题进行排序 实际发生的情况:我在联系人页面上。我点击refresh,JS中的logger语句出现。插件按预期工作。如果我导航到Home,然后返回Contacts,该文件仍会在页面源中列出,但不会出现logger语句。插件不工作 我们的application.js内容如下: //= require jquery //= require jquery_ujs //= requir

应该发生什么:无论是重定向、渲染,还是仅仅单击应用程序中的新页面,任何具有类
可排序的表(我在原始JS中编辑过)都应该按列标题进行排序

实际发生的情况:我在联系人页面上。我点击refresh,JS中的logger语句出现。插件按预期工作。如果我导航到Home,然后返回Contacts,该文件仍会在页面源中列出,但不会出现logger语句。插件不工作

我们的
application.js
内容如下:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery_nested_form
//= require bootstrap
//= require sorttable
//= require_directory .
//= require autocomplete-rails
//= require turbolinks
//= require bootstrap-switch

禁用每页或全部的TurboLink对我们来说不是一个解决方案。如果文件不能与TurboLink一起使用,我愿意使用gems;然而,gem应该在应用程序中添加少量代码。我们不希望有专门的类来选择要排序的列。另外,一些要排序的列不是来自ActiveRecord(如1个单元格中的2个属性)。

经过大量调试,我明白了为什么TurboLink不喜欢
sorttable.js
。JS文件包括触发器(一些基于浏览器类型),用于在加载文档时启动sorttable。此类事件侦听器与TurboLink不兼容。我所做的工作如下

  • vendor/assets/javascripts/sorttable.js
    移动到
    app/views/shared/js/_sorttable.html.haml

  • 在新文件前面加上
    :javascript
    %script{languauge:“javascript”}
    ),并将以下所有行缩进2个空格

  • application.js

  • 在所有相关页面的顶部,添加以下代码块:

    = render 'shared/js/sorttable'
    %script
      $(document).on("page:change", sorttable.init)
    
  • 有关代码示例和进一步解释,请参阅