Правильные обратные вызовы и ссылки для PhoneGap-App - PullRequest
0 голосов
/ 28 ноября 2011

Я хочу создать PhoneGap-приложение с несколькими таблицами базы данных, которые будут проанализированы в Javascript-Objects, поэтому я написал следующий код:

$(document).ready( function(){      
    var startpage = Object.create(Persons);
    startpage.load();
});

var Page = {
    db: window.openDatabase("database", "1.0", "My Database", 200000),
    load: function(){
        this.db.transaction(this.queryDB, this.errorCB);
    },
    errorCB: function(err){
        alert("Error processing SQL: " + err.message);
    }
}

var Persons = Object.create(Page, {        
    queryDB: {
        value: function(tx){
            tx.executeSql(
                'SELECT * FROM PERSONS', 
                [], 
                this.createObjects,  <-- Problem is here
                this.errorCB
            );
        }
    },
    createObjects: {
        value: function(tx, results){
            // [...] parse results to objects
        }    
    }
});

Проблема в том, что «this» в queryDB-метод - это ссылка на сам метод, а не на объект.Кто-нибудь знает, как я могу ссылаться на правильный метод?

Спасибо!

1 Ответ

2 голосов
/ 28 ноября 2011

Вы захотите сделать что-то вроде того, что обсуждается в этом вопросе:

Что означает «var that = this;»в JavaScript?

...