Backbone - 标签出现在 URL 的最后

Backbone - Hashtag appearing at very end of URL

我正在做我的第一个 Backbone 项目。我正在使用 Backbone 1.3.3 和 Underscore 1.8.3。我的路由器有问题。当我调用路由器时,它将主题标签放在 URL:

的最后
http://server:9999/backbone_demo/addMember#

而不是:

http://server:9999/backbone_demo/#addMember

这就是我想要的。

var router = null;
var context = "backbone_demo";

DemoRouter = Backbone.Router.extend({

    initialize: function () {
        initializeEventsForNavigation();
    },
    routes: {"" : "start", "/bands": "bands", "/addMember": "addMember", "*defaultRoute" : "defaultRoute"},

    defaultRoute: function() {
        this.start();
    },
    start: function () {
        this.bands();
    },
    bands: function () {
        BackboneDemo.View.unrenderAllViews();
        BackboneDemo.View.renderBandList();
    },
    addMember: function() {
        BackboneDemo.View.unrenderAllViews();
        BackboneDemo.View.renderAddMember();
    }


});

var init = function() {
    initializeEventsForBandListRender();
    initializeEventsForAddMemberRender();
    router = new DemoRouter();
    Backbone.history.start({pushState: true, root: context});

};

var navigate = function(e) {
    var route = e.detail.route;
    router.navigate("/" + route, true);
};

如果我将 "addMember" 传递给我的导航函数(在 e.detail.route 中),我会将“/addMember”传递给 router.navigate。除了这个细节,路由器工作正常。

如果你想使用散列路由,我认为你应该将 pushState 设置为 false

Backbone.history.start({pushState: false, root: context});