从rails中的不同coffeescript文件调用函数

时间:2016-03-05 17:30:28

标签: javascript jquery ruby-on-rails coffeescript

votable.coffee:

set_votable_hooks = (vote_area_name) ->
  ...

questions.coffee:

vote_area_name = 'xyz'
$(document).ready(set_votable_hooks(vote_area_name))

我希望在文档就绪时调用函数。我知道每个咖啡文件都放在一个函数中,因此其内容在其他文件中不可用。我已经读过,解决方案是使set_votable_hooks全局或使用命名空间,无法管理它们工作,因为我是js的新手。但据我所知,首选解决方案是使用命名空间,以免污染全局对象。

1 个答案:

答案 0 :(得分:4)

发现,首先我的错误是分配回调 - 带参数的函数,所以我最终得到:

votable.coffee:

window.Votable ?= {}

window.Votable.set_votable_hooks = (vote_area_name) ->
  ...

questions.coffee:

load_votable = ->
  window.Votable.set_votable_hooks('.question-vote-area')

$(document).ready(load_votable)

并重新定义了application.js中的咖啡文件:

...
//= require votable
//= require_tree .
...

在可投票之前没有在页面上包含的最后一步问题