2011-11-11 4 views
2

triggerRoute = true;でnavigateメソッドを使用すると、ページは新しいページに正しくナビゲートされますが、履歴は更新されません。モバイルバックボタンが機能しない - backbone.js 0.5.3 with jquerymobile 1.0 RC2

Android搭載端末(Nexus S)で戻るボタンを押すと、履歴がポップしますが、ナビゲーションは行われません。

triggerRouteに渡してからBackbone.history.loadUrl();を呼び出した場合、[戻る]ボタンはうまく動作しますが、誤って並べ替えます。

Navigateメソッドは、このコメントを持っている....

// URL-encoding the fragment in advance. This does not trigger 
// a `hashchange` event. 

いくつかの記事を読んだ後、

... Navigateメソッドを使用すると、正しい方法であると歴史を更新する必要があることを私には思えます

コードスニペット...

er.getApp().getController().navigate('home', true); 

OR

er.getApp().getController().navigate('home'); 
Backbone.history.loadUrl(); 

jquerymobileとバックボーンの組み合わせで既知のルーティングの問題がありますか。以前の回答はbackbone.jsの以前のバージョンに関連しており、もう有効ではありません...

答えて

1

決議が見つかりました。基本的にjquerymobileには、戻るボタンとhashchangeイベントで何もしないように指示し、バックボーンで完全に処理させます。

appLoadingイベントハンドラのindex.htmlには、Jquerymobileをバックボタンにバインドするコードがあり、削除しました。

//removed this part 
document.addEventListener("backbutton", function(){ 
       if (window.history.length > 0) { 
        window.history.back(); 
        return false; 
       } 
       navigator.app.exitApp(); 
}, true); 

// Since we are using the backbone router we want to disable 
// auto link routing of jquery mobile. 
// The code below for mobileinit 
// notice the last two settings 
    $(document).bind("mobileinit", function() { 
    $.mobile.ajaxEnabled = false; 
    $.mobile.hashListeningEnabled = false; 
    $.mobile.pushStateEnabled = false; 
    $.mobile.changePage.defaults.changeHash = false; 
}); 
関連する問題