【问题标题】:Backbone.history.navigate doesn't save parametersBackbone.history.navigate 不保存参数
【发布时间】:2017-01-14 00:19:27
【问题描述】:

我有一些路线:

routes: {
    "": "main",
    "!/": "main",
    "!/page": "page",
    "!/page/:id": "page"
},

然后我有一些html链接,例如:

<a href="site.com/#!/page/3">my link</a>

如果我点击我的链接,我会访问 url site.com/#!/page/3,这对我来说没问题。但如果我有这个链接:

<a href="javascript:void(0);" onclick="Backbone.history.navigate('!/page/3', {trigger:true});">my link</a>

我访问网址site.com/#!/page/(没有id=3)。 id 仍然被定义。但是页面重新加载后,我的ID有问题,因为我有url:site.com/#!/page,而ID没有定义。

如何使用以下链接标签在 Backbone 中导航?

<a href="javascript:void(0);" onclick="Backbone.history.navigate('!/page/3', {trigger:true});">my link</a>

【问题讨论】:

    标签: javascript backbone.js backbone-routing


    【解决方案1】:

    骨干路由使用片段,就像任何其他锚链接一样。你只需要使用href,因为它应该被使用:

    <a href="#!/page/3">my link</a>
    

    点击这样的链接时,无需将trigger 设置为true,因为这是默认行为。 Backbone 监听hashchangepopstate 事件并在必要时触发路由。


    另外,routes 哈希可以简化:

    routes: {
        "*anything": "main",
        "!/page(/:id)": "page"
    },
    

    请参阅routes documentation

    路由可以包含参数部分,:param,它匹配单个 URL 斜线之间的分量;和 splat 零件*splat,可以匹配任何 URL 组件的数量。路线的一部分可以通过 用括号括起来(/:optional)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多