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 の launch 関数でも同じことが起こっています。その理由と、起動機能で Phonegap を使用する方法を知っている人はいますか?

4

1 に答える 1

2

準備が整う前に、phonegap 'navigator' API にアクセスしようとしているようです。deviceready イベントをリッスンする必要があり、トリガーされたらナビゲーターを呼び出すことができます。

このように呼び出すことができます。

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 に答える