为什么我不能在Sencha touch 2的启动功能中使用Phonegap的导航器对象?

时间:2012-11-20 01:24:38

标签: sencha-touch-2

这很奇怪,如果我点击页面上的按钮就可以使用Phonegap的导航器对象。

控制器

Ext.define('App.controller.MainController', {
    extend: 'Ext.app.Controller',

    config: {
        refs: {
            homeButton: 'button[action=viewHome]',
        },
        control: {
            homeButton: {
                tap: 'showHome'
            },
        }
    },  
    showHome: function(button, e, options) {
        navigator.notification.vibrate(1000);
    },}

但是如果我尝试在启动函数中访问导航器对象,我会'未定义'。

控制器

Ext.define('App.controller.MainController', {
    extend: 'Ext.app.Controller',
    launch: function(){
        navigator.notification.vibrate(1000);
    },}

在app.js的启动功能中也发生了同样的事情。任何人都知道为什么这样以及如何在启动功能中使用Phonegap?

1 个答案:

答案 0 :(得分:2)

在准备好之前,您似乎正试图访问phonegap'navigator'API。您必须侦听deviceready事件,一旦触发,您可以调用navigator。

你可以这样称呼它。

launch: function () {
    if(Ext.browser.is.PhoneGap && !Ext.os.is.Desktop) {
        document.addEventListener("deviceready", this.mainLaunch, false);
    } else {
        this.mainLaunch();
    }
},

mainLaunch: function() {
    navigator.notification.vibrate(1000);
}

Ext.browser检查也是为了让它在Chrome浏览器上运行,否则你将不得不总是在模拟器或设备上测试应用程序。