从内联脚本调用coffeescript中的函数

时间:2013-07-28 12:15:12

标签: javascript ruby-on-rails coffeescript

我已在coffeescript文件中定义了一个函数:

showAlert = () ->
  alert("asdfsd")

从视图中我将此函数称为:

:javascript
  jQuery(function(){
   showAlert();
  });

但该功能未触发。这有什么不对?

1 个答案:

答案 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命名空间在所有(浏览器)范围内都可用。