我在咖啡脚本文件中定义了一个函数:
showAlert = () ->
alert("asdfsd")
从视图中我称这个函数为:
:javascript
jQuery(function(){
showAlert();
});
但该功能未触发。这里有什么问题?
我在咖啡脚本文件中定义了一个函数:
showAlert = () ->
alert("asdfsd")
从视图中我称这个函数为:
:javascript
jQuery(function(){
showAlert();
});
但该功能未触发。这里有什么问题?
这是因为 Coffeescript 自动将其转译后的 Javascript 输出包装在立即调用函数表达式(IIFE) 中,这意味着您在 Coffeescript 块中声明的任何函数都不在全局范围内。因此,您的 jQuery 块找不到该showAlert
函数,因为它不存在于您的 jQuery 块可以访问的范围/闭包中。
您可以做的(尽管我不确定这是一个好主意)是在window
命名空间上声明您的“全局”函数:
window.showAlert = -> alert('asdfasdf')
并从您的 jQuery 块中调用它:
javascript:
jQuery(function($){
window.showAlert();
});
这将起作用,因为window
命名空间在所有(浏览器)范围内都可用。