将 sencha touch 2 集成到 phonegap 中,无法启动 'deviceready' 事件

Posted

技术标签:

【中文标题】将 sencha touch 2 集成到 phonegap 中,无法启动 \'deviceready\' 事件【英文标题】:Integrate sencha touch 2 into phonegap, cannot get 'deviceready' event to fire up将 sencha touch 2 集成到 phonegap 中,无法启动 'deviceready' 事件 【发布时间】:2012-05-03 11:30:32 【问题描述】:

这似乎是 PhoneGap 0.9.6 (Blackberry) + Sencha Touch 1.1.0: deviceready does not fire 之外的另一个问题,它与 ios 相关。

所以,我无法启动该事件;使用最新的cordova (phonegap) 1.6.1。

有没有人成功整合了这些 ST2 和 PhoneGap?

这是我的 app.json :

"js": [
       
        "path": "resources/js/cordova-1.6.1.js",
        "update": "delta"
    ,
    
        "path": "sdk/sencha-touch.js"
    ,
    
        "path": "app.js",
        "update": "delta"
    ,
],

我的 app.js:

launch: function() 
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();
    var mainPanel = Ext.Viewport.add(
        xclass: 'Sencha.view.Main'
    );

    // load phonegap stuff
    document.addEventListener("deviceready", function () 
        mainPanel.fireEvent("deviceready");
     , true);
,

我的 Main.js 控制器:

Ext.define('Sencha.controller.Main', 
    extend: 'Ext.app.Controller',
    
config: 
    refs: 
        mainPanel: 'mainpanel',
    ,
    control: 
        mainpanel: 
            deviceready: 'onDeviceReady'
        ,
    ,
,
onDeviceReady: function() 
    var states = ;
    states[Connection.UNKNOWN]  = 'Unknown connection';
    states[Connection.ETHERNET] = 'Ethernet connection';
    states[Connection.WIFI]     = 'WiFi connection';
    states[Connection.CELL_2G]  = 'Cell 2G connection';
    states[Connection.CELL_3G]  = 'Cell 3G connection';
    states[Connection.CELL_4G]  = 'Cell 4G connection';
    states[Connection.NONE]     = 'No network connection';
    Ext.Msg.alert('Connection type', states[networkState], Ext.emptyFn);
    navigator.notification.beep(2);
,

【问题讨论】:

我已成功集成旧版本(PG 1.2、ST 1.1)。您的代码在之前的 PhoneGap 版本中是否有效,还是这是一个新问题?如果您将 PhoneGap 事件侦听器与 Sencha Touch 事件(从其他地方触发事件)分开测试(仅显示警报)会发生什么? 您好,不清楚;我怎样才能单独启动监听器;能给我举个例子吗 ?我的工作环境。是 ST2 PG 1.7.0 我想知道您是否可以缩小问题的范围。如果您这样做,是否会显示警报:document.addEventListener("deviceready", function () alert('deviceready'); , true); 抱歉耽搁了。在 index.html 中添加您的行可以正常工作,但不能在其他任何地方。 【参考方案1】:

Sencha Touch 2 将监听该事件并调用您的 onReady/launch 方法 - 因此,如果您尝试在启动方法中监听它们,它已经被触发了。

只需将您的逻辑放在应用程序的启动方法中即可。

【讨论】:

以上是关于将 sencha touch 2 集成到 phonegap 中,无法启动 'deviceready' 事件的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch - 如何将各种图标(每个项目一个)集成到选择字段中?

Sencha Touch 2:数据集成或如何在sencha和javascript之间共享动态信息

Phonegap 和 Sencha Touch 2.3 集成

将 Sencha Architect 项目从 Sencha Touch v2.0.x 更新到 Sencha Touch 2.1.x

将 Sencha Touch 1.X 升级到 Sencha Touch 2.X

集成谷歌地图时,sencha touch 应用程序仍处于蓝色加载屏幕