Phonegap + Sencha 프로젝트를 Phonegap 1.2.0에서 2.1.0 및 Sencha로 업그레이드해야합니다. 2 그리고 수정 작업 간의 반복 작업이 더 빨라진 Chrome + 부두에서 작업 디버깅 작업을 수행했습니다.안드로이드 내에서 디버깅 할 때 "Uncaught ReferenceError : app is not defined"가 표시되지만 Chrome Debugger에서는 그렇지 않습니다.
마이그레이션 부분에 조금 어려움을 겪은 후 프로젝트가 Chrome에서 실행되는 시점 (예 : 디버거에서 실행 메소드를 실행할 수 있고 애플리케이션이로드 될 수 있음)을 얻었지만 같은 것을 시도 할 때 Android의 경우 잡히지 않은 ReferenceError : 앱이 정의되지 않았습니다.. 같은
안드로이드에서 호출 된 HTML 파일을 찾습니다, 내가 응용 프로그램는 전역 객체에 대한 빈약 한 선택임을 알 수
<html>
<head>
<title>Testing ExtJS 4</title>
<link rel="stylesheet" href="libs/sencha/resources/css/android_v01.css" type="text/css">
<link rel="stylesheet" href="libs/hx/resources/css/prosegur.css" type="text/css">
<!-- libs -->
<script type="text/javascript" charset="utf-8" src="libs/phonegap/cordova-2.1.0.js"></script>
<script type="text/javascript" src="libs/sencha/sencha-touch-all-compat.js"></script>
<script type="text/javascript" src="libs/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="libs/jquery/xml2json.js"></script>
<script type="text/javascript" src="libs/aes/aes.js"></script>
<script type="text/javascript">
currentPlatform="Android";
</script>
<script type="text/javascript" src="app/App.js"></script>
<script type="text/javascript">
db_name="PMobileDB";
db_version="1.0";
DEBUG_MODE=false;
LOG_FILE="sdcard/xlogx.txt";
function fireCreateLocalStore() {
var prosegurConfig = window.localStorage.getItem('ProsegurConfig');
if (prosegurConfig == null) {
prosegurConfig = new Object();
prosegurConfig.configuration = {
esClienteProsegur: false,
estaActivadoClienteProsegur: false,
nroContrato: '',
paisDeContrato: 'ARG',
paisDeResidencia: 'ARG',
nombre: '',
cel: '',
fechaNacimiento: '',
email: '',
estado: 'NO_CONFIGURADO',
wsMobileConfig: 'https://psm.am:1962/wsProseguardConfig.asmx/wsMobileConfig',
wsHashActivation: 'https://psm.am:1962/wsProseguardConfig.asmx/wsHashActivation',
wsAlertFire: 'https://psm.am:1962/wsProseguardAlerts.asmx/wsAlertFire',
guardianPin: '',
startGuardianAlertTime: '',
version: db_version
};
prosegurConfig.alerts = [
{
alertType: 'GENERAL',
description: '',
tryContactCRA: false
},
{
alertType: 'MEDICAL',
description: '',
tryContactCRA: false
},
{
alertType: 'CARASSISTANCE',
description: '',
tryContactCRA: false
}
];
prosegurConfig.contacts = new Array();
window.localStorage.setItem('ProsegurConfig', Ext.JSON.encode(prosegurConfig));
console.log('se carga los datos iniciales de Prosegur');
}
console.log(prosegurConfig);
console.log('arranco app.mainLaunch()');
app.app.launch();
console.log('salgo de app.mainLaunch');
}
</script>
<script type="text/javascript">document.addEventListener("deviceready", fireCreateLocalStore,false);
</script>
</head>
<body></body>
</html>
첫째, 특정 일이 1.4.0과 1.5 사이의 변화라고 생각합니다. 0, launch() 메소드에 대한 원래 호출은 다음과 같습니다 :
app.launch();
나는 그 2.1.0에서 일을하고 내가 좋아하는 그것을 호출 할 수없는 것을 발견 :
app.app.launch를();
위의 코드를 붙여 넣은 fireCreateLocalStore()를 호출하면 Chrome에서 올바르게 작동합니다.
Eclipse에서 이것을 컴파일하고 디버그 옵션을 사용하여 배포하면 logcat이 (이전에) 데이터베이스 객체를 생성하고 launch() 행에 도달하면 오류가 발생합니다. 제목 : Uncaught ReferenceError : 앱이 정의되어 있지 않습니다.
불쾌감을주는 글로벌 콘텐츠를 html과 MyApp.js (기본보기 포함)의 MyApp와 같이 덜 상충되는 것으로 변경하려고 시도 했으므로 이제는 이런 종류의 붙임성. 그런데
, 내 App.js은 다음과 같습니다
// Main application entry point
Ext.application({
name: 'app',
phoneStartupScreen: '../resources/images/LOADING_01.png',
tabletStartupScreen: '../resources/images/LOADING_01.png',
glossOnIcon: true,
fullscreen: true,
autoCreateViewport : true,
// the controller will take care of creating the view
//controllers: ['Configuration', 'ImmediateAlert', 'Guardian', 'Log'],
controllers: ['Configuration', 'ImmediateAlert', 'Guardian'],
// You could delete this, here only to illustrate
// the sequence of events
initialize: function() {
console.log('app initialize');
this.callParent();
},
launch: function() {
console.log(app);
this.launched = true;
Ext.create("app.view.Viewport");
this.mainLaunch();
},
mainLaunch: function() {
//if (!device || !this.launched) {return;}
if (!this.launched) {return;}
console.log('MainLaunch : loading in ' + currentPlatform);
Ext.getCmp('navigationView').getNavigationBar().add({id: 'save',
text: 'Guardar',
ui: 'light',
align: 'right',
})
if (app.store == undefined)
app.store = new Object();
app.store.contacts = Ext.create('Ext.data.Store', {
model: "app.model.Contact"
});
app.store.alerts = Ext.create('Ext.data.Store', {
model: 'app.model.Alert',
});
app.service.ProsegurLocalStorageStore.populateStores(app.store.alerts);
app.service.ProsegurLocalStorageStore.populateContactStores(app.store.contacts);
var config = app.service.ProsegurLocalStorageStore.getConfiguration();
console.log('ATENCION' + app.configuration.GeneralConfiguration.fireAlertService());
if (config.data.wsBaseURL != null && config.data.wsBaseURL != '') {
app.configuration.GeneralConfiguration.prosegurServiceBaseURL = config.data.wsBaseURL;
}
if (config.data.wsBaseCriticalURL != null && config.data.wsBaseCriticalURL != '') {
app.configuration.GeneralConfiguration.prosegurServiceCriticalBaseURL = config.data.wsBaseCriticalURL;
}
if (currentPlatform == "MacOS"){
navigator.geolocation.getCurrentPosition();
}
Ext.MessageBox.YESNO=[{itemId:'no',text:'NO'},{itemId:'yes',text:'Si'}];
Ext.MessageBox.OK = {itemId:'ok',text:'Aceptar'};
Ext.MessageBox.OKCANCEL=[{itemId:'cancel',text:'Cancelar'},{itemId:'ok',text:'Aceptar'}];
Ext.Date.dayNames = [
'Domingo',
'Lunes',
'Martes',
'Miercoles',
'Jueves',
'Viernes',
'Sabado'
];
Ext.Date.monthNames = [
'Enero',
'Febrero',
'Marzo',
'Abril',
'Mayo',
'Junio',
'Julio',
'Agosto',
'Septiembre',
'Octubre',
'Noviembre',
'Diciembre'
];
Ext.Date.monthNumbers = {
'Ene': 0,
'Feb': 1,
'Mar': 2,
'Abr': 3,
'May': 4,
'Jun': 5,
'Jul': 6,
'Ago': 7,
'Sep': 8,
'Oct': 9,
'Nov': 10,
'Dic': 11
};
if (Ext.is.Android) {
Ext.EventManager.onWindowResize(function() {
Ext.Viewport.scrollToTop();
Ext.Viewport.updateBodySize();
Ext.Viewport.fireEvent('resize', Ext.Viewport, Ext.getBody().getSize());
app.views.viewport.getActiveItem().fireEvent('resize');
});
};
app.service.ProsegurServiceCallbackDaemon.run();
}
});
글쎄, App.js의 App에서 MyApp로 변경하고 View 및 index-android.html에서 다른 참조가 누락되었다고 생각합니까? – Cthulhu