function MyConstructor(data, transport) {
this.data = data;
transport.on('data', ( function () {
alert(this.data);
}).bind(this) );
}
// Mock transport object
var transport = {
on: function(event, callback) {
setTimeout(callback, 1000);
}
};
// called as
var obj = new MyConstructor('foo', transport);
Если вы используете underscore.js - http://underscorejs.org/#bind
transport.on('data', _.bind(function () {
alert(this.data);
}, this));
function MyConstructor(data, transport) {
var self = this;
this.data = data;
transport.on('data', function() {
alert(self.data);
});
}
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', () => {
alert(this.data);
});
}
Вы не можете вернуть несколько ответов на один запрос. Вместо этого создавайте и храните файлы где-нибудь, а обслуживают их другим маршрутом. Верните обработанный шаблон с URL-адресом для маршрута, который будет обслуживать файл.
@app.route('/database')
def database():
# generate some file name
# save the file in the `database_reports` folder used below
return render_template('database.html', filename=stored_file_name)
@app.route('/database_download/<filename>')
def database_download(filename):
return send_from_directory('database_reports', filename)
В шаблоне используйте url_for
для создания URL-адреса загрузки.
<a href="{{ url_for('database_download', filename=filename) }}">Download</a>