Правильный способ ссылки на «это» представление обработчиков обратного вызова (успех или ошибка) после сохранения в Backbone JS - PullRequest
2 голосов
/ 23 сентября 2011

Я пытаюсь сослаться на элемент представления через $ (this.el) в рамках обратного вызова при успешном выполнении или ошибке в модели Backbone.

Пример:

Изнутри SomeViewClass (который расширяетсяBackbone.View),

@model.save({}, {
success: (model, response) ->
    ($ this.el).removeClass("editing")
})

Однако я застрял в том факте, что «this» не относится к экземпляру SomeViewClass.Есть идеи?

1 Ответ

5 голосов
/ 23 сентября 2011

Поскольку вы используете CoffeeScript, вы можете использовать жирную стрелку (=>) , чтобы привязать текущее значение this к вашей функции:

@model.save({}, {
    success: (model, response) =>
        ($ this.el).removeClass("editing")
})

Есливы работали в простом JavaScript, вы обычно использовали бы стандартный var self = this; трюк:

var self = this;
model.save({ }, {
    success: function(model, response) {
        $(self.el).removeClass("editing");
    }
});

Или, поскольку вы используете backbone.js (который требует underscore.js), вы можете использовать _.bind для создания вашей связанной функции.

Если ваш обратный вызов был больше или вы хотите использовать один и тот же обратный вызов в нескольких местах, тогда _.bindAll будетвариант.Вы должны сделать обратный вызов именованным методом, хотя;но, если бы обратный вызов был большим, вы, вероятно, все равно захотите отключить его.

...