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();
        });
    });          
});

我也在这里使用 WAMP 作为 Web 服务器,并使用 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 回答