2014-11-21 59 views
3

如果您尝试直接访问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或刷新页面时没有路由被激发,甚至没有默认路由。

+0

你是如何访问一个网址?用'#'符号还是不? – mikach 2014-11-21 10:13:47

+0

带#例如'mydomain.com /#blog' – RMcLeod 2014-11-21 10:16:00

+0

尝试'#/ blog'而不是'/#blog'。 – mikach 2014-11-21 10:41:48

回答

2

在设置您的侦听器之前,您需要启动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/