Backbone.js 主干路由器未调度?

Backbone.js 主干路由器未调度?,backbone.js,router,Backbone.js,Router,我是主干网0.9.1的新手。 我发现当我更改哈希时,我无法在我的演示中触发哈希更改。 我的URL是http://[…]/backbone/#help。我想我应该收到一条警告信息“帮助”,但我不是 $(function() { var App = { Controllers:{}, initialize: function(){ new App.Controllers.Routes(); var h = new

我是主干网0.9.1的新手。 我发现当我更改哈希时,我无法在我的演示中触发哈希更改。 我的URL是http://[…]/backbone/#help。我想我应该收到一条警告信息“帮助”,但我不是

$(function() {
    var App = {
        Controllers:{},
        initialize: function(){
            new App.Controllers.Routes();
            var h = new Backbone.History();
            h.start({root: '/backbone/'});
        }
    };

    App.Controllers.Routes = Backbone.Router.extend({
        routes: {
            "help":                 "help",
            "search/:query":        "search",
        },

        help: function() {
            alert("help");
        },

        search: function(query) {
            alert("search");
        }
    });

    App.initialize();
});

是否存在误解或误用?

您不需要自己实例化历史对象。此外,如果未使用pushstate,则不需要在开始选项中指定
根目录

因此,您的初始化方法应该如下所示:


        initialize: function(){
            new App.Controllers.Routes();
            Backbone.history.start();
        }

感谢您的帮助~但在主干网0.9.1中,当我调用Backbone.history.start()时,主干网的原型中似乎没有历史记录;收到错误消息:Uncaught TypeError:无法调用undefined的方法“start”。看起来路由器在0.9.1中有一些更改?这不是0.9.x中的更改,并且.history属性从未成为主干对象原型的一部分。在实例化路由器并在其上定义路由后,将自动添加Backbone.history属性。如果出现此错误,则表示路由器未实例化或配置不正确。请将初始化函数更改为new App.Controller.Routes();Backbone.history.start();问题解决了。