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

Как зарегистрировать событие Jquery click с coffeescript на рейках 3.1

Я пытаюсь сделать то, что кажется, должно быть простым, но по какой-то причине ускользает от меня. Я хочу добавить событие click к ссылке в файле tasks.js следующим образом:

$ ->
  $('.cancel_task').click -> 
    $('#task_form').toggle

Это отображается как:

(function() {
  $(function() {
    return $('.cancel_task').click(function() {
    return $('#task_form').toggle;
  });
});
}).call(this);

Все, что я хочу, это что-то вроде:

$('.cancel_task').click(function()
{
  $('#task_form').toggle();
});

Как это сделать с помощью coffescript и rails 3.1 stack?

4b9b3361

Ответ 1

Кофе должен обернуть все, что вы делаете, в ограниченном объеме, чтобы вы не заполняли мир глобальными. Это полезно, если у вас нет, не игнорируйте это. На верхнем уровне вы можете экспортировать с помощью this.something = "value".

Теперь ваш код выше не работает, потому что для вызова функций нужен паз, когда нет параметров. Это сделает два snip - его функционально одинаковым. Функции являются переменными в JavaScript, поэтому он просто предполагает, что вы хотите вернуть эту функцию вместо результата без парнеров.

$ ->
  $('.cancel_task').click -> 
    $('#task_form').toggle()

Наконец, функция Coffee всегда возвращает последнее значение функции. Это просто, как это работает. Поэтому не беспокойтесь о операторах return, вы всегда можете проигнорировать результаты.

Ответ 2

Второй фрагмент, который вы опубликовали, - это правильный вывод из coffee, а второй и последний фрагменты, которые вы опубликовали, функционально эквивалентны. Если вы хотите, вы можете избавиться от закрытия верхнего уровня, используя опцию coffee --bare (это задокументировано), но в противном случае вы не должны беспокоиться о выходе CoffeeScript, если это не вызовет проблем.