1
У меня возникли проблемы с выяснением способа доступа к this
в функции render.onload
ниже. Я знаю, что ответ, вероятно, связан с закрытием, но я пока не могу обдумать его.Проблема с файлом FileReader в базовой линии
var PhotoModel = Backbone.Model.extend({
initialize: function() {
this.uploadPhoto();
},
uploadPhoto: function() {
var file = this.get("file");
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(event) {
// I don't have access to "this" here...
this.dataURL = event.target.result;
}
}
});
У вас есть доступ к 'this', но это уже не ссылка на тот же объект. Во внутренней функции «это» является «читателем». Попробуйте присвоить, например, 'var model = this.model' во внешней области, а затем' model.dataURL = ... 'во внутренней области. Таким образом, вы используете закрытие, которое уже сформировано. Не нужно создавать другую. –
Это имеет смысл. Благодаря! –