【问题标题】:Route parameter disappears while acessing a route访问路由时路由参数消失
【发布时间】:2016-08-25 11:28:48
【问题描述】:

我有路线:

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

然后我访问例如http://mysite.ru/#!/order/21。但我的网址更改为:http://mysite.ru/#!/order/

数字 21 隐藏了。如何将此号码保存在我的网址中?

【问题讨论】:

  • 骨干路由器没有魔法。我在调用堆栈中有什么调用 navigate() 吗?
  • 例如,我访问 url mysite.ru/#!/order/21 并且成功了,但是我的 url 变成了 mysite.ru/#!/order 并且重新加载后我失败了,因为 id没有定义。用户无法将直接 url 复制到我的订单 (mysite.ru/#!/order/21),因为他们只看到 mysite.ru/#!/order 而没有 ID。
  • 成为?用魔法?
  • 我不知道)我创建项目来显示我的问题:jsfiddle.net/alego/ohayr3aa 如果单击“订单 1”,然后单击“刷新页面”,当前 ID 的内容将为空
  • 是的,看看第 59 和 62 行

标签: backbone.js backbone-routing


【解决方案1】:

我认为它是级联的。先尝试设置通用订单路由:

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

【讨论】:

  • 谢谢,但我的路由也可以。我的问题是重新加载页面后 url 崩溃。
  • 例如,我访问 url mysite.ru/#!/order/21 并成功,但我的 url 变为 mysite.ru/#!/order 并且重新加载后我失败了,因为没有定义 id。用户无法将直接 url 复制到我的订单 (mysite.ru/#!/order/21),因为他们只能看到 mysite.ru/#!/order 而没有 ID。
  • 除非您需要,否则不应将您从 mysite.ru/#!/order/21 重新路由到 mysite.ru/#!/order。您希望客户看到 ID 吗?否则,将 ID 保存在全局变量而不是 url 中可能是明智的。
  • 用户浏览到:myssite.ru/#!/order/21 你的脚本做什么?看起来你被重定向了。也许用 router.navigate() ?
  • 感谢 cmets。我创建项目来显示我的问题:
【解决方案2】:

您可以通过将:id 参数设为可选来简化您的路由器,因为您的回调对于两个订单路由是相同的。

routes: {
   "": "main",       
   "!/order(/:id)": "order",
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2023-03-27
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多