На самом деле все работает так, как и должно. Как вы можете прочитать здесь , Coffeescript оборачивает ваш код в анонимную функцию, чтобы предотвратить загрязнение глобального пространства имен. Если вы просто посмотрите на примеры, вы можете пропустить это, но в документах четко указано:
Хотя подавлено в этом
документация для наглядности, все
Выходные данные CoffeeScript обернуты в
анонимная функция: (function () {...
}) (); Это защитная оболочка, в сочетании
с автоматической генерацией
ключевое слово var, сделайте это чрезвычайно
трудно загрязнить глобальное
Пространство имен случайно.
Чтобы получить доступ к объекту, переменной или методу, объявленному в этой искусственной области, вам нужно сделать ее явно доступной в глобальной области, например, как это:
window.validate_signup_form = validate_signup_form
В случае, если вы упомянули, я бы определенно использовал события для запуска метода.
Кстати: нет необходимости использовать пустые скобки в объявлении вашего метода foo =->
отлично работает.