javascript - 如何忽略 Backbone.history.start 上 URL 中的哈希值

标签 javascript backbone.js

我有一个类似 mysite.com/en/bla-bla/bla/page#someid 的网址 如果在哈希 URL 中找到 someid,浏览器应该将窗口滚动到某个页面位置。

此外,我的页面上有主干,如果用户打开 URL 主干中包含某些哈希值的页面,则无法如果没有定义的路由与当前 URL 匹配。 Backbone 无法将 #someid 作为路径进行匹配。

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

如何解决?

最佳答案

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

splat parts *splat, which can match any number of URL components.

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) { /*...*/ }
});

定义您希望 Backbone 处理的任何路由,然后让 splat 捕获任何未定义的路由。

关于javascript - 如何忽略 Backbone.history.start 上 URL 中的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40789974/

相关文章:

backbone.js - Backbonejs - 保存后避免解析

backbone.js - 在 Backbone 中,如果 fetch 读取内容类型为 :'text/plain' 的内容,是否可以告诉 fetch 将其读取为 JSON

javascript - 隐藏 10000 个下拉菜单的最佳方法

javascript - 是否可以更改计数器的宽度?

javascript - three.js - 如何让相机在补间期间注视对象

javascript - 如何定义数组

javascript - 如何生成动态列

javascript - Backbone LayoutManager 重新渲染 subview

javascript - 自定义 HTML5 表单验证最初不显示自定义错误

javascript - 使用 react-bootstrap 的下拉列表在构建静态文件中有效,但在与 Web 服务器一起提供时无效