我从phonegap开始,并尝试将JavaScript OOP与它一起使用。但问题是方法调用和东西。想象一下:
我在JavaScript中有一个主控制器,这个文件试图控制网络调用之间的大部分工作流程,数据库和变更视图。
这是我的main.js。PhoneGap和Javascript OOP
var onlineStatus = false;
var mainModel;
var connectTo = "http://192.168.1.65/mobile/service/";
document.addEventListener("deviceready", onDeviceReady, false);
document.addEventListener("online", online, false);
document.addEventListener("offLine", offline, false);
function whenOnline() {
setOnline(true);
}
function whenOffline() {
setOnline(false);
}
function onDeviceReady() {
mainModel = new MainModel();
mainModel.openDatabase();
mainModel.startApplication();
}
和mainModel是这样的:
function MainModel() {
this.isOnline = false;
this.database = null;
this.login = null;
this.getDatabase = function() {
return this.database;
};
this.openDatabase = function() {
this.login = new LoginModel();
this.database = window.openDatabase("wayacross", "0.2", "Test DB", 1000000);
};
this.startApplication = function() {
this.database.transaction(this.login.checkLogin, goLoggin);
};
}
和登录模式:
function LoginModel() {
this.loginError = function() {
navigator.notification.alert('Login Error', // message
null, // callback
'Login', // title
'Done' // buttonName
);
goLogin();
};
this.isLogged = function(tx, results) {
//ajax code
};
this.checkLogin = function(tx) {
alert('checkLogin: Variable TX = '+ tx);
tx.executeSql('SELECT * FROM login', [], this.isLogged, this.loginError);
};
}
这是我的时刻来控制启动工作流的代码。问题是当我打电话在mainModel.js this.database.transaction(this.login.checkLogin,goLoggin);它不会无所作为。当我将this.login.checkLogin更改为this.login.checkLogin()时,它工作正常,但tx变量未定义。
我可能在这里做错了事,但我不知道为什么。也许JavaScript OOP不支持phonegap,这是我不真正相信的。
你能帮忙吗?
由于提前,
Elkas
感谢您回复mate =)我会尽力找到它并尝试更好地理解它。 – Elkas
没问题。你已经遇到了一些经典的Javascript特性之一,所以我不会责怪你为此而挣扎。 :-) –