0

这很奇怪,如果我像这样单击页面上的按钮,我可以很好地使用 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?

4

1 回答 1

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 浏览器上进行这项工作,否则您必须始终在模拟器或设备上测试应用程序。

于 2012-11-21T07:43:25.340 回答