在Rails资产管道中,调用命名函数的正确方法是什么?
例如,如下所示,在同一个文件中调用命名函数似乎很正常。
#alerts.js.coffee
show_alert = (msg) ->
alert(msg)
$(document).ajaxComplete (event, request) ->
show_alert 'ajax completed'
但是从另一个coffee文件调用show_alert无效
例如与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 /咖啡专家,而且搜索显示“咖啡不支持命名函数”,因此我可能使用了错误的术语。我在这里应该参考什么?
最佳答案
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'
关于javascript - 在coffeescript中调用命名函数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37806551/