Подтвердить что ты не робот

Функции вызова, определенные с помощью кофе script?

У меня есть следующий код coffeescript для генерации и предупреждения:

show_alert = () ->
  alert("Hello! I am an alert box!")

который компилируется в:

(function() {
  var show_alert;

  show_alert = function() {
    return alert("Hello! I am an alert box!");
  };

}).call(this);

в моем html у меня есть следующие

<input onclick='show_alert()' type='button' value='Show alert box' />

Однако не отображается окно предупреждения? Ниже приведен html, скопированный из браузера:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>Test Rails Application</title>
    <style type='text/css'>.application h1 {
  color: lime; }
</style>
    <script type='text/javascript'>(function() {
  var show_alert;

  show_alert = function() {
    return alert("Hello! I am an alert box!");
  };

}).call(this);
</script>
  </head>
  <body>
    <h1>Hello from applicaiton.html.haml</h1>
    <div class='application'><h1>Hello World</h1>
<input onclick='show_alert()' type='button' value='Show alert box' />
</div>
  </body>
</html>

Почему я не могу открыть окно предупреждения?

4b9b3361

Ответ 1

Ваша проблема в том, что сгенерированный код javascript находится в другой области. Вы должны решить эту проблему. либо добавив параметр -b в компилятор coffeescript, либо экспортируйте свою функцию явно через

root = exports ? this
root.show_alert = () -> alert("Hello! I am an alert box!")

Для получения дополнительной информации об экспорте и проблеме области см. fooobar.com/questions/3293/...

Я создал рабочий jsfiddle с указанным выше кодом coffeescript

Ответ 2

Я нашел два способа решить эту проблему FIRST add @перед именем функции

@say_hi = () ->
  $(alert('Hello!!!'))

SECOND в конце файла кофе добавить

window["say_hi"] = say_hi

Ответ 3

в коде coffeescrpt, попробуйте сохранить функцию в окне: window["show_alert"] = show_alert

Ответ 4

<script type="text/javascript"> var show_alert; show_alert = function(){ alert("Hello,this is me!"); } </script> Я думаю, это нормально.