나는 phonegap에서 시작하여 JavaScript OOP를 적용하려고합니다. 그러나 문제는 메서드 호출 및 물건입니다.
JavaScript로 메인 컨트롤러를 가지고 있는데,이 파일은 네트워크 호출, 데이터베이스 변경보기 사이에서 대부분의 작업 흐름을 제어하려고합니다.
이것은 내 main.js입니다. PhoneGap and 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
답장을 보내 주셔서 감사합니다. 나는 그것을 찾고 더 잘 이해하려고 노력할 것입니다. – Elkas
문제 없습니다.당신은 소수의 고전적인 Javascript 특질 중 하나에 부딪 쳤기 때문에 나는 그것으로 고생해서 당신을 비난하지 않습니다. :-) –