重新加载JavaScript将Rails 4中的Turbolink重定向到另一页



在我的应用程序中,我仅在完全加载该页面时显示表页。应用程序中有两个这样的页面。为了实现此目的,我为相应视图中的表格设置'style =" display:none"''''''''''''''。首页具有指向其他类似页面的链接,该页面应显示表,但是当我单击链接时,另一页上的表仍然隐藏了。我知道发生这种情况是因为JavaScript(脱离表格)未再次执行。如何在这两页之间共享JavaScript?请注意,我还有其他JavaScript代码,我想在这两个页面之间共享。

已知解决方案:删除" Turbolinks"对我有用,但是每次我在页面之间切换时,加载都非常慢。是否有方法可以使这项工作不受影响。

我的JavaScript位于" App/Assets/javaScripts/myScript.js"。

我有一个控制器的" mycontroller"和两个动作,"索引",带有视图" view1"one_answers" index1",带有视图" view2"。两种视图都显示出具有不同数据的相似表。

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

请让我知道我是否需要分享更多详细信息。

谢谢您的帮助!

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

直接来自《铁路指南:

5.2页面更改事件在编写CoffeeScript时,您通常需要在页面加载时进行某种处理。用jQuery,你会写 这样的东西:

$(document).ready -> alert "page has loaded!"但是,因为 Turbolinks超越了普通页面加载过程,该事件是 这是不可解雇的。如果您的代码看起来像 这,您必须更改代码才能做到这一点:

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

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

尝试在第二页的底部添加它

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

在此链接中阅读第5.2节,对我有用:

编写CoffeeScript时,您通常需要在页面加载时进行某种处理。使用jQuery,您会写下这样的东西:

$(文档).ready-> 警报"页面已加载!"

但是,由于Turbolinks超过了普通的页面加载过程,因此不会发射依赖的事件。如果您的代码看起来像这样,则必须更改代码才能做到这一点:

$(文档).on"页面:更改", -> 警报"页面已加载!"

最新更新