正确回调PhoneGap-App的回调和参考

时间:2011-11-27 22:26:27

标签: javascript oop callback cordova ecmascript-5

我想创建一个带有多个数据库表的PhoneGap-Application,这些表将被解析为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
        }    
    }
});

问题是queryDB方法中的“this”是对方法本身的引用,而不是对Object的引用。有谁知道我如何引用正确的方法?

谢谢!

1 个答案:

答案 0 :(得分:2)

你想要做的事情就像这个问题中讨论的那样:

What does 'var that = this;' mean in JavaScript?

所以在人群中你会想要做一个

var that = this;

然后在queryDB函数中引用that.createObjects。