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

时间:2012-05-03 11:30:32

标签: javascript-events cordova sencha-touch-2

这似乎是与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);
},

1 个答案:

答案 0 :(得分:4)

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

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