【问题标题】:Reload Javascript when redirected to other page with turbolink in Rails 4在 Rails 4 中使用 turbolinks 重定向到另一个页面时重新加载 Javascript
【发布时间】:2016-06-16 11:03:27
【问题描述】:

在我的应用程序中,我仅在页面完全加载时才显示表格页面。应用程序中有两个这样的页面。为了实现这一点,我在相应视图中为表格设置了 'style="display:none"',当页面完全加载时,我使用 '$('mytable').show()' 通过 Javascript 文件显示表格.第一页有链接到应该显示表格的其他类似页面,但是当我单击链接时,其他页面上的表格仍然隐藏。我知道发生这种情况是因为 Javascript(取消隐藏表格)没有再次执行。如何在这两个页面之间共享 Javascript?请注意,我还有其他 Javascript 代码,我想在这两个页面之间共享。

已知解决方案: 删除“turbolinks”对我有用,但是每次我在页面之间切换时,加载速度都很慢。有没有办法使这项工作不影响性能。

我的 Javascript 位于“app/assets/javascripts/myscript.js”。

我有一个控制器“mycontroller”和两个动作,“index”和视图“view1”和“index1”和视图“view2”。两个视图都显示具有不同数据的相似表格。

我尝试通过互联网搜索,但找不到相关帖子。

如果我需要分享更多详细信息,请告诉我。

感谢您的帮助!

解决方案:我在 Rails 指南上找到了解决方案,请参阅下面的答案。

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    直接来自Rails guide:

    5.2 页面更改事件 在编写 CoffeeScript 时,您通常希望在页面加载时进行某种处理。使用 jQuery,你会写 像这样:

    $(document).ready -> alert "page has loaded!" 但是,因为 Turbolinks 覆盖了正常的页面加载过程,该事件 这依靠不会被解雇。如果您的代码看起来像 这个,你必须改变你的代码来做到这一点:

    $(document).on "turbolinks:load", -> alert "page has loaded!"对于 更多详细信息,包括您可以绑定的其他事件,请查看 Turbolinks 自述文件。

    只需修改该示例以重新加载表,而不是警报。

    【讨论】:

    • 感谢@UlyssesInvictus。这可以使用纯 Javascript 或 jQuery 来完成吗?所有的文件都是用 Javascript 编写的,我不想把 coffeescript 和它混在一起。
    • 是的,Coffescript 只是 JS 的语法糖。试试$(document).on("ready", function) 或$(document).on("turbolinks:load", function)
    • 谢谢,但这似乎不起作用,另外这次即使重新加载页面,“函数”下的代码也不会执行。我试过 '$(document).on("turbolinks:load", function)' 这个。
    • '$(document).on("page:change", function)' 似乎有效。
    • 我的坏 turbolinks:load 是 Rails 5。你也可以使用 page:load 来获得这种行为。
    【解决方案2】:

    尝试在第二页底部添加此内容

    <script>
     $(document).ready(main);
    </script>
    

    【讨论】:

      【解决方案3】:

      阅读this link 的第 5.2 节,这对我有用:

      在编写 CoffeeScript 时,您通常希望在页面加载时进行某种处理。使用 jQuery,你可以这样写:

      $(document).ready -> 警报“页面已加载!”

      但是,由于 Turbolinks 覆盖了正常的页面加载过程,因此不会触发它所依赖的事件。如果您的代码看起来像这样,则必须更改代码以执行此操作:

      $(document).on "page:change", -> 警报“页面已加载!”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-18
        • 1970-01-01
        • 2017-06-08
        相关资源
        最近更新 更多