在我的应用程序中,仅在页面完全加载时才显示表格页面。应用程序中有两个这样的页面。为实现这一点,我设置了' style =" display:none"'对于相应视图中的表格以及页面完全加载时,我使用' $(' mytable')。show()'来显示Javascript文件中的表格。第一页有链接到应该显示表的其他类似页面,但是当我点击链接时,其他页面上的表仍然是隐藏的。我知道这是因为Javascript(取消隐藏表)不会再次执行。如何在这两个页面之间共享Javascript?注意我还有其他Javascript代码,我想在这两个页面之间共享。
已知解决方案: 删除' turbolinks'为我做的伎俩,但每次我在页面之间切换时,加载速度很慢。是否有办法使这项工作不会影响性能。
我的Javascript位于app / assets / javascripts / myscript.js'。
我有一个控制器' mycontroller'和两个动作,'索引'查看' view1'和' index1'查看' view2'。两个视图都显示具有不同数据的类似表。
我尝试通过互联网搜索但找不到相关帖子。
如果我需要分享更多细节,请与我们联系。
感谢您的帮助!
解决方案:我在Rails指南中找到了解决方案,请参阅下面的答案。
答案 0 :(得分:3)
直接来自Rails guide:
5.2页面更改事件编写CoffeeScript时,您经常需要在页面加载时进行某种处理。使用jQuery,你可以写 像这样的东西:
$(document).ready -> alert "page has loaded!"
但是,因为 Turbolinks会覆盖正常的页面加载过程,即事件 这依赖不会被解雇。如果你有代码看起来像 为此,您必须更改代码才能执行此操作:
$(document).on "turbolinks:load", -> alert "page has loaded!"
更多详细信息,包括您可以绑定的其他事件,请查看 Turbolinks README。
只需修改该示例即可重新加载表格,而非警报。
答案 1 :(得分:0)
尝试在第二页底部添加此内容
<script>
$(document).ready(main);
</script>
答案 2 :(得分:0)
阅读this link的第5.2节,这对我有用:
编写CoffeeScript时,您经常需要在页面加载时进行某种处理。使用jQuery,你会写这样的东西:
$(document).ready - &gt; 警告“页面已加载!”
但是,由于Turbolinks会覆盖正常的页面加载过程,因此不会触发依赖此事件的事件。如果您的代码如下所示,则必须更改代码才能执行此操作:
$(document).on“page:change”, - &gt; 警告“页面已加载!”