executeAsync, SQLite, Firefox extension
Не могу передать в объект результаты работы внутри функции executeAsync:
function virt(){ //блаблабла this.getDb = function (id){ var statement = db.createStatement("SELECT * FROM `table` WHERE r_id=:id;"); statement.params.id=id; statement.executeAsync({ handleResult: function(aResultSet){ var row=aResultSet.getNextRow(); this.r_id=row.getResultByName("r_id");}, //row (или r_id) надо передать наружу - в объект, частью которого является данная функция handleError:,//функция из примера ниже handleCompletion://функция из примера ниже }); alert(this.r_id);//undefined (для row - тоже самое) }} Задача - прочитать строку БД и передать полученный массив(спец объект) в объект virt. Eval и window.row не работают - вылетает ошибка NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN. Всё это в плагине (сайдбар) для FF. Пытался передавать и строки (свойства объекта row). Спецификация фунцкции executeAsync и пример её использования. Чувствую что упускаю что-то глобальное и(но) очевидное - помогите найти. Если сам же положил грабли и не могу обойти - толкните в нужном направлении. Спасибо! |
Решилось передачей значения в функцию того же объекта.
|
Цитата:
спасибо. |
Запрос:
this.db2form = function (id){ var statement = as.db.createStatement("SELECT * FROM `table` WHERE id=:id;") statement.params.id = id statement.executeAsync({ handleResult: function(aResultSet){virt.db2virt(aResultSet);},//обращение через глобальную переменную handleError: function(aError) {print("Error: " + aError.message);}, handleCompletion: function(aReason) {virt.virt2form()} }) } Обработка результата: this.db2virt = function (res){ row = res.getNextRow(); for (var i = 0; i<this.fields.length; i++) this.fields[i].fromDB(row.getResultByName(this.fields[i].dbName)) } После завершения обработки: this.form2virt = function(){ for (var i=0; i<this.fields.length; i++) this.fields[i].fromForm() } Все функции - методы объекта Virt. |
ок, спасибо!
|
Часовой пояс GMT +3, время: 15:49. |