我整个星期都在使用桌面编写Sencha Touch 2应用程序来测试它。我刚刚尝试将其与PhoneGap集成,并在iOS模拟器和物理iOS设备上进行测试。
我可以看到ST2应用程序正在启动“启动”,并确认应用程序仍可在桌面上运行......但Ext.viewport.add(...)似乎没有更新屏幕(仍然显示默认的蓝色/闪烁点加载器。)
我的index.html如下所示:
<!DOCTYPE HTML>
<html manifest="" lang="en-US">
<head>
<meta charset="UTF-8">
<title>Yoga Journal's FindYoga</title>
<link href="resources/css/app.css" type="text/css" rel="stylesheet" />
<style type="text/css">
/* trimmed css */
</style>
<script type="text/javascript" src="cordova-2.0.0.js"></script>
<script id="microloader" type="text/javascript" src="sdk/sencha-touch.js"></script>
<script id="microloader" type="text/javascript" src="all-classes.js"></script>
<script id="microloader" type="text/javascript" src="app.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
</head>
<body>
<div id="appLoadingIndicator">
<div></div>
<div></div>
<div></div>
</div>
</body>
</html>
我的app.js看起来像这样:
Ext.application({
name: 'YogaNow',
controllers: ['Main', 'C1','C2','C3'],
views: ['Main'],
stores: ['S1', 'S2', 'S3','S4'],
models: ['M1', 'M2', 'M3','M4'],
launch: function() {
console.log('launch');
Ext.Viewport.add({
xtype: 'mainpanel',
});
},
});
if(Ext.os.deviceType == 'Desktop') {
setTimeout(function() {
var e = document.createEvent('Events');
e.initEvent('deviceready');
document.dispatchEvent(e);
}, 250);
}
如上所述,应用程序在桌面上运行正常(没有错误)。如果我从index.html中删除cordova引用并注释掉“if(Ext.os.deviceType){...}”它在iOS(模拟器和设备)下的Safari中也可以正常运行。
删除对cordova的引用也使得应用程序在Simulator或Device上运行时可以在PhoneGap / Cordova shell中运行。
为什么包含cordova-2.0.0.js然后在Xcode中构建导致ST2代码不更新视图?