在Rails资产管道中,调用命名函数的正确方法是什么?
例如,在同一个文件中调用命名函数,如下所示,似乎完美无缺。
#alerts.js.coffee
show_alert = (msg) ->
alert(msg)
$(document).ajaxComplete (event, request) ->
show_alert 'ajax completed'
但是从另一个咖啡文件调用show_alert不起作用
e.g。与Jquery fileupload,
#jquery_fileupload.js.coffee
jQuery ->
$("#container").fileupload
stop: (e, data) ->
show_alert 'File upload stopped'
返回Uncaught ReferenceError: show_alert is not defined
毫无疑问是一个基本问题,但我会感激一些指点。我不是javascript / coffescript专家,搜索发现" coffeescript不支持命名函数"所以我可能使用了错误的术语。我应该在这里引用什么?
答案 0 :(得分:1)
Coffeescript执行功能表达而不是功能定义。所以你的coffeescript函数应该出现在函数执行代码之前。
一种方法是将函数放在一个对象中,并在文档加载时执行它们。
#alert.js.coffee
window.MyHelperFunctions =
show_alert: (msg) ->
alert msg
#jquery_fileupload.js.coffee
jQuery ->
$("#container").fileupload
stop: (e, data) ->
MyHelperFunctions.show_alert 'File upload stopped'