Ошибка рендеринга представления Backbone.js
Если я сделаю это - все работает отлично -
var UserList = Backbone.View.extend({
el: '.page',
render: function(){
var users = new Users();
users.fetch({
success: function() {
console.log('success');
}
})
this.$el.html('test');
}
});
Но когда я вставляю this.$el.html('test');
в обратном вызове успеха я получаю ошибку:
TypeError: 'undefined' не является объектом (оценка 'this.$ El.html')
var UserList = Backbone.View.extend({
el: '.page',
render: function(){
var users = new Users();
users.fetch({
success: function() {
console.log('success');
this.$el.html('test');
}
})
}
});
Журнал консоли запускается правильно.
1 ответ
Решение
Внутри success
контекст изменился, поэтому this
больше не относится к объекту представления (я полагаю, что это фактически относится к объекту JQuery Ajax). Чтобы обойти это, вы можете сохранить ссылку на представление, используя var self = this
:
var users = new Users();
var self = this;
users.fetch({
success: function() {
console.log('success');
self.$el.html('test');
}
})