Я не уверен, что этот вопрос специфичен для Backbone.js. У меня есть модель со следующей визуализацией функции:Сохранение «этой» внутренней функции обратного вызова
render: function() {
var self = this;
this.$el.empty();
this.model.fetch({
success: function() {
self.$el.append(self.template(self.model.attributes));
}
});
return this;
}
Как вы можете видеть, внутри функции обратного вызова success
, я использую переменную self
. Это связано с тем, что внутри обратного вызова this
установлено на window
, когда я хочу, чтобы он был установлен в представление. Есть ли способ сохранить исходную ссылку this
, не сохраняя ее в другой переменной?
Для небольших обратных вызовов без внутренних обратных вызовов, которые можно использовать function.prototype.bind (или аналогичные альтернативы), но для больших кусков кода я рекомендую придерживаться «я» или «того», потому что поскольку эти лексико-переменные переменные продолжают работать даже для вложенных обратных вызовов. – hugomg