Gem 使用 Turbolinks 过程遇到的小坑

mingyuan0715 · 2013年07月02日 · 最后由 tarzansos 回复于 2013年07月05日 · 8999 次阅读

rails4 出来了嘛 先慢慢过渡,用上 Turbolinks 的插件。 结果页面加载之后需要再刷新一遍才能显示。

问题解决: If you have any script tags in the body you do not want to be re-evaluated then you can set the data-turbolinks-eval attribute tofalse

<script type="text/javascript" data-turbolinks-eval=false> console.log("I'm only run once on the initial page load"); </script>

#1 楼 @Rei 太有默契了哇,同时发一条相同内容的评论 哈哈

不过相比我上一篇文章写的时候,Turbolinks 又有了不少更新,顶楼问题就是新问题。

意思就是如果一个页面里面有 script 标签,那么用浏览器后退记录的时候就会再次执行它。有些场合是需要这样做的,比如 disqus,有些脚本就不能这样做,比如事件绑定,之前绑定的事件已经随着页面一起进了 turbolinks cache,如果再执行就会重复绑定,这时候就加个 data 段忽略掉。

#5 楼 @Rei 学习了,你列举的这个例子,Turbolinks 已经就是这也做的了?

#6 楼 @ginchenorlee 我没读新的源码,看来要找时间再读一遍,这个标签我也是看这个贴才知道。事件绑定我也要做些实验。Turbolinks 要求开发者对 js 运行的生存周期有进一步的了解。

#7 楼 @Rei 我是记得看过这篇文章,今天想找来再阅读一遍,去了你以前的博客没找到。就去打开有道词典读文档去了~

#7 楼 @Rei javascript_include_tag 如何使产生的标签加上这个 <code>data-turbolinks-track</code>属性,感觉无解。

Turbolinks 真的好坑啊。。。我第一时间去掉了。。。

用了一段时间 Turbolinks 后,果断去掉……不过的确对页面的加载有提升……

#10 楼 @edokeh #11 楼 @imlcl 我现在觉得很爽。。看着无刷新更新页面就舒坦。如果用了 jquery 的 ready(),加上文档介绍的 gemjquery-turbolinks

#12 楼 @mingyuan0715 我也有用 jquery-turbolinks,可能我个人不怎么会用 js……

#6 楼 @ginchenorlee 正在读源码,发现之前理解错了。Turbolinks 后退的时候是不会执行 script 的。

data-turbolinks-eval=false 的意思是希望这段 script 只在直接访问的时候执行,Turbolinks.visit 访问的时候不执行。

楼主的问题要贴代码才能分析了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号