【问题标题】:my router not working with back / forward click我的路由器无法使用后退/前进点击
【发布时间】:2012-09-15 01:55:11
【问题描述】:

我的路由器是这样的:

define(function(require) {
var _         = require('underscore'),
    Backbone  = require('backbone'),

    homeStageView,
    homeSidebarView,
    yxyStageView;



return Backbone.Router.extend({
    routes: {
        '/web/:route'     : 'viewLoader'
    },

    initialize: function() {
        //this._bindRoutes();
        $('.link').click(function(e) {
            e.preventDefault();
            Backbone.history.navigate($(this).attr('href'), true);
        });
    },

    viewLoader: function(route) {
        switch(route) {
            case 'home': 
                this.homeHandler();
                break;
            case 'yxy':
                this.yxyHandler();
                break;
        }
    },

    // navigation handlers
    homeHandler: function() {
        if ( !homeStageView ) {
            require(['views/home-stage-view'], function(HomeStageView) {
                homeStageView = new HomeStageView();
                homeStageView.render();
            });    
        }
        else {
            homeStageView.render();
        }
        this.renderHomeSidebarView();
    },

    yxyHandler: function() {
        if ( !yxyStageView ) {
            require(['views/yxy-stage-view'], function(YxyStageView) {
                yxyStageView = new YxyStageView();
                yxyStageView.render();
            });    
        }
        else {
            yxyStageView.render();
        }
        this.renderHomeSidebarView();
    },

});

});

在我的主视图中,我像这样初始化路由器:

appRouter = new AppRouter();    
if ( history && history.pushState ) {
    Backbone.history.start({pushState: true});
    console.log('has pushState');
}
else {
    Backbone.history.start();
    console.log('no pushState');
}

这适用于加载我的所有视图,但当用户单击后退按钮时不起作用。

地址栏中的 url 有相应的机会,仅此而已。显然,我错过了一些东西。

有人可以帮忙吗?

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    来自fine manual

    扩展 Backbone.Router.extend(properties, [classProperties])

    [...] 请注意,您需要避免在路由定义中使用前导斜杠:

    您的路线是/web/:route,因此请尝试删除前导斜杠:

    routes: {
        'web/:route': 'viewLoader'
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 1970-01-01
      相关资源
      最近更新 更多