我從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特性之一,所以我不會責怪你爲此而掙扎。 :-) –