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, время: 05:03. |