1

私は現在、以下のモジュラー アプローチに基づくモバイル アプリケーションに取り組んでいます。

http://weblog.bocoup.com/organizing-your-backbone-js-application-with-modules/

ルーティングに問題があり、何が問題を引き起こしているのかを突き止めることができません。

私のルーターの定義は次のとおりです。

    var AppRouter = Backbone.Router.extend({
    routes: {            
        'module1' : 'module1_home', // working        
        'module1view/:id' : 'module1_view',    //Not working                  
        // Default
        '*actions': 'defaultAction' //Working
    },
    initialize:function () {
        // Handle back button throughout the application
        $('.back').live('click', function(event) {
            window.history.back();
            return false;
        });
        this.firstPage = true;
    },
    module1_view : function(id)
    {        
        var module1 = MyApp.module('module1');
        var view = new module1.DisplayView;        
        this.changePage(view);            
    },    
    defaultAction : function () {
        var home = MyApp.module('home');
        var view = new home.DefaultView;  
        this.changePage(view);
    },
    changePage:function (page) {        
        $(page.el).attr('data-role', 'page');
        page.render();
        $('body').append($(page.el));
        var transition = 'slide';

        if (this.firstPage) {
            transition = 'none';
            this.firstPage = false;
        }
        $.mobile.changePage($(page.el), {
            changeHash:true, 
            transition: transition
        });
    }
});

URL の例と結果を次に示します。

http://localhost:12345/myapp/ => shows the default view
http://localhost:12345/myapp/index.html => shows the default view
http://localhost:12345/myapp/#module1 => shows module1 home view
http://localhost:12345/myapp/index.html#module1 => shows module1 home view

http://localhost:12345/myapp/#module1view/123 => url changes to http://localhost:12345/myapp/module1view/123 and displays the default view
http://localhost:12345/myapp/index.html#module1/123 => url changes to http://localhost:12345/myapp/module1view/123 and displays the default view

を使用してJQMナビゲーションも無効にしました

jQuery(function($) {    
    $(document).on("mobileinit", function () {
        $.mobile.ajaxEnabled = false;
        $.mobile.linkBindingEnabled = false;
        $.mobile.hashListeningEnabled = false;
        $.mobile.pushStateEnabled = false;

        // Remove page from DOM when it's being replaced
        $('div[data-role="page"]').live('pagehide', function (event, ui) {
            $(event.currentTarget).remove();
        });
    });          
});

また、ここでは Web サーバーとして WAMP を使用し、テスト ブラウザーとして firefox を使用しています。

誰かが同様の問題を抱えていて、この問題を解決する方法についていくつかの洞察を得ることができますか?

更新 #1: いくつかの補足情報、アラートはここでは呼び出されません:

module1_view : function(id)
    { 

        alert(id);
    }

したがって、コードの上部で何かが起こっていると思うかもしれません。

4

1 に答える 1

1

問題を見つけることができました。内部にJQM設定を入れているようです:

jQuery(function($) {    });
or
$(function() { });

ドキュメントをトリガーしませんでした $(document).on("mobileinit", function () { }); 何らかの理由で。これについてはまだ調査する必要があります。

しかし、削除するとコマンドがトリガーされ、JQMナビゲーションが無効になり、バックボーンルーターを適切に使用できます。

于 2012-09-21T10:05:52.953 に答える