2016-11-24 21 views
0

我有一个URL,如mysite.com/en/bla-bla/bla/page#someid 如果在哈希URL中找到someid,浏览器应该滚动窗口到某个页面位置。如何忽略网址上的哈希值Backbone.history.start

此外,我在页面上有骨干网页,如果用户在URL骨干网页中打开某个散列值的页面失败如果没有定义的路由匹配当前的URL。骨干不能匹配#someid作为路径。

var result = Backbone.history.start(); 
     if (!result) { 
      console.log("If no defined route matches the current URL"); 
     } 

如何解决?

回答

2

您可以添加一个包罗万象的route

图示部分*splat,它可以匹配任何数量的URL组件。

var Router = Backbone.Router.extend({ 
    routes: { 
     '*catchall': 'homeRoute', 
     // any route defined further down takes precedence on the ones before. 
     'real-route/:id': 'realRoute', 
    }, 
    homeRoute: function() { /*...*/ }, 
    realRoute: function(id) { /*...*/ } 
}); 

定义要骨干,以处理任何路线,然后让任何不确定的路线由图示捕获。

+0

谢谢埃米尔,我应该写每个可能的哈希值? –

+0

您可以编写您希望Backbone考虑的路线。然后,所有其他路线都会被splat路线“* whatever”捕获。 –