backbone.js - Backbone 路由器无法直接访问

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

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

最佳答案

您开始 Backbone.history在您设置监听器之前,这意味着它们无法对页面加载时发生的初始路由使用react。

搬家 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/

关于backbone.js - Backbone 路由器无法直接访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27058675/

相关文章:

javascript - 主干 - 尝试使用集合中的下一个或上一个模型重新渲染 View

javascript - 从多个 View 中使用backbone.js中的常见默认值

ruby-on-rails - 单页应用程序上的cancan

javascript - Backbone : fetch and scope

javascript - 主干路由器事件

javascript - Bootstrap 弹出窗口无法正常工作

javascript - 迭代 js 集合

javascript - Backbone Marionette 布局 View 无法正常工作

javascript - 无法接收 CORS 的 http 状态代码 413

javascript - Backbone.js 集合是否已排序?