2013-07-28 5 views
1

Я определил функцию в CoffeeScript файле как:Вызов функции в CoffeeScript от встроенного скрипта

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

И с точки зрения я называю эту функцию, как:

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

Но функция не запуск. Что здесь не так?

+0

Выполняет ли 'showAlert()' работу? – alex

+0

@alex да! когда я удаляю функцию и помещаю код в функцию jQuery. –

ответ

1

Это потому, что CoffeeScript автоматически завершает свой выход transpiled Javascript в качестве Immediately-Invoked Function Expression (IIFE), что означает любые функции, вы объявите внутри блока CoffeeScript являются не в глобальном масштабе. Таким образом, ваш блок jQuery не может найти функцию showAlert, потому что она не существует в области/закрытии, доступ к которой может получить ваш блок jQuery.

Что вы можете сделать (хотя я не уверен, что это отличная идея) является объявить «глобальной» функции на window имен:

window.showAlert = -> alert('asdfasdf') 

и вызывать его из блока JQuery:

javascript: 
    jQuery(function($){ 
    window.showAlert(); 
    }); 

Это будет работать, потому что пространство имен window доступно во всех (браузере) областях.

Смежные вопросы