我已在coffeescript文件中定义了一个函数:
showAlert = () ->
alert("asdfsd")
从视图中我将此函数称为:
:javascript
jQuery(function(){
showAlert();
});
但该功能未触发。这有什么不对?
答案 0 :(得分:1)
这是因为Coffeescript会自动将其转换后的Javascript输出包装在Immediately-Invoked Function Expression(IIFE)中,这意味着您在Coffeescript块中声明的任何函数都在全局范围内而不是。因此,您的jQuery块无法找到showAlert
函数,因为它不存在于您的jQuery块可以访问的范围/闭包中。
你可以做什么(虽然我不确定这是一个好主意)是在window
命名空间声明你的“全局”函数:
window.showAlert = -> alert('asdfasdf')
从你的jQuery块中调用它:
javascript:
jQuery(function($){
window.showAlert();
});
这将起作用,因为window
命名空间在所有(浏览器)范围内都可用。