Backbone Router不能直接访问

时间:2014-11-21 10:01:58

标签: backbone.js

如果您单击链接但我的骨干路由器工作正常,但在尝试直接访问URL或刷新页面时不起作用。

路由器

var app = app || {};

var appRouter = Backbone.Router.extend({
    routes: {
        "blog": "blog",
        "blog/post/:id": "blogPost",
        "faqs": "faqs",
        "*other": "defaultRoute"
    }
});

app.Router = new appRouter();
Backbone.history.start();

应用

var app = app || {};

var view = new app.AppView();

app.Router.on('route:defaultRoute', function() {
    console.log("Default Route");
}

app.Router.on('route:blog', function() {
    console.log("Blog Route");
    view.showBlog();
}

每当路由被触发时我都会登录到控制台,但是当您直接访问网址或刷新页面时,不会触发任何路由,甚至也不会触发默认路由。

1 个答案:

答案 0 :(得分:5)

在设置侦听器之前启动Backbone.history,这意味着他们无法对页面加载时发生的初始路由做出反应。

Backbone.history.start();移出路由器定义,或者至少在设置路由后,你应该好好去。

var appRouter = Backbone.Router.extend({
    routes: {
        "blog": "blog",
        "*other": "defaultRoute"
    },

    blog: function() {},
    defaultRoute: function() {}                            
});

app.Router = new appRouter();


app.Router.on('route:defaultRoute', function() {
    console.log("Default Route");
});
app.Router.on('route:blog', function() {
    console.log("Blog Route");
});

Backbone.history.start();

演示http://jsfiddle.net/nikoshr/k3Lcxwq2/