Прежде всего, я предполагаю, что $("body").on "click", ".stuff", ->
на самом деле внутри вашего метода initialize
и вы просто есть проблема форматирования. В противном случае ваш код не имеет большого смысла.
Проблема, с которой вы столкнетесь, заключается в том, что jQuery контролирует то, что @
(AKA this
) находится внутри функции обратного вызова. Так что просто привязка functionB
будет недостаточной, потому что вы не можете добраться до functionB
, не имея права @
.
В вашем конкретном случае, все это на самом деле не имеет значения, потому что functionB
определяется как связанная функция (с использованием =>
) и у вас нет необходимости анонимной обертки в обработчик событий, просто рука on
сама функция:
$("body").on "click", ".stuff", @functionB
Если по какой-либо причине вы настаиваете на привязке анонимной функции, вы должны использовать _.bind
(или Function.prototype.bind
), а не _.bindAll
; _.bindAll
привязывает функции (по имени) к определенному @
, но вы хотите найти определенную функцию (которая не имеет имени) для определенного @
, см. What is the difference between these Backbone/Underscore .bind() methods? для более подробного обсуждения разницы. Вы бы что-то вроде:
$("body").on "click", ".stuff", _(-> @functionB()).bind(@)
# or
unbound_function = -> @functionB()
$("body").on "click", ".stuff", _.bind unbound_function, @