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>
说说 PJAX,Turbolink,以及 Basecamp 的前端方案 http://blog.chloerei.com/articles/834b424d-talk-about-pjax-turbolink-and-basecamp
不过相比我上一篇文章写的时候,Turbolinks 又有了不少更新,顶楼问题就是新问题。
意思就是如果一个页面里面有 script 标签,那么用浏览器后退记录的时候就会再次执行它。有些场合是需要这样做的,比如 disqus,有些脚本就不能这样做,比如事件绑定,之前绑定的事件已经随着页面一起进了 turbolinks cache,如果再执行就会重复绑定,这时候就加个 data 段忽略掉。
#6 楼 @ginchenorlee 我没读新的源码,看来要找时间再读一遍,这个标签我也是看这个贴才知道。事件绑定我也要做些实验。Turbolinks 要求开发者对 js 运行的生存周期有进一步的了解。
#6 楼 @ginchenorlee 正在读源码,发现之前理解错了。Turbolinks 后退的时候是不会执行 script 的。
data-turbolinks-eval=false
的意思是希望这段 script 只在直接访问的时候执行,Turbolinks.visit 访问的时候不执行。
楼主的问题要贴代码才能分析了。