Я использую плагин телефонного разговора в Marionette
ItemView
, но может быть любым асинхронным материалом. Я просто хочу передать переменную throw помощник шаблона, который должен дождаться (в данном случае) операций БД.Сделать templateHelpers ждать, пока функция асинхронного завершения закончится в Marionette
Я также попытался поместить асинхронный фрагмент кода внутри функции templateHelpers
, но он не ждет, а переменная value
пуста в шаблоне.
initialize: function(options){
that=this;
var db = window.openDatabase("MyDB", "1.0", "My Database", 200000);
db.transaction(queryDB, errorCB);
function queryDB(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS MyDB (id unique, name, value)');
var query = "SELECT * FROM MyDB WHERE id="+that.model.get('id')+" LIMIT 1";
tx.executeSql(query, [], querySuccess, errorCB);
}
function errorCB(err) {
alert("Error processing SQL: "+err.code);
}
function querySuccess(tx, results) {
var len = results.rows.length;
if(len>0)
that.value = results.rows.item(0).value;
}
},
templateHelpers: function(){
var helperParams = {};
var val = {"value": this.value };
_.extend(helperParams, val);
return helperParams;
},
Любые идеи?
переопределить шаблонHelpers hash on querySuccess? – Evgeniy
спасибо @Evgeniy, не могли бы вы привести мне пример? – cor
Я мог бы заставить это работать, добавляя к успеху запроса эти две строки: 'this.templateHelpers();' 'that.render();' Вы имели в виду это? Я считаю это немного сложным решением. Во всяком случае, если вы дадите ему ответ, я отметю его;) – cor