Неправильное событие выполняется в CoffeeScript - PullRequest
0 голосов
/ 08 октября 2011

Это работает:

$("#add").click( -> stack.op "add" )
$("#sub").click( -> stack.op "sub" )

но это не так:

for op in ['add','sub']  
  $('#' + op).click( -> stack.op op)

Обе кнопки выполняют последнюю операцию «sub».

Class Stack
  add: ...
  sub: ...
  op: (name) ->
    eval "this.#{name}()"

1 Ответ

3 голосов
/ 08 октября 2011

Использование do конструкция:

for op in ['add', 'sub']
    do (op) ->
        $('#' + op).click( -> stack.op op)

Это потому, что цикл for не создает замыкание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...