Rails Rails 4 中 coffee 的问题

JeremyLi · 2014年04月06日 · 最后由 JeremyLi 回复于 2014年04月07日 · 2716 次阅读

有两个 controller,Device 和 Barn,以及对应的 coffee 文件 devices.js.coffee 和 barns.js.coffee,现在在两个 coffee 文件里分别有$ -> f1() 和$ -> f2(),然后在刷新任一个页面时,f1() 和 f2() 都会执行。但是我现在想在加载 devices 的页面时只执行 f1(),加载 barns 的页面时只执行 f2(),应该如何实现啊?

<script> 写到页面内。

f1 和 f2 的调用卸载 view 里。。。

这样做行不行,所有的 coffee 里都不写$->(),只向一个公共文件 after_render.js.coffee 的对象里注册 f1,f2。

取页面上一个特定的 hidden field 里的值,里面是 f1,f2,再运行。

更普通的每个 js.coffee 里的函数都包装在一个同名对象里,组成象命名空间一样的树,每次新开页面的时候可以选一个树杈作为当前的环境。

#3 楼 @5swords 新手求救,能再说的详细点吗?能提供代码最好,多谢。 我现在主要的问题是在 after_render.js.coffee 里面看不到定义在 devices.js.coffee 里的函数 f1()。

#4 楼 @JeremyLi 对不起,coffee script 的书我都没看完,也没用过,写出代码一定不好看。你可以先用@Rie的办法在f1()直接调用先。

#4 楼 @JeremyLi coffee 默认把代码包在匿名域内,要放到全局需要指定

window.f1 = ->

或者

@f1 = ->

#6 楼 @Rei 太感谢了!可以了!

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