【问题标题】:Is it possible for Vue Router to display different layouts based on the parameter passed?Vue Router 是否可以根据传递的参数显示不同的布局?
【发布时间】:2019-09-30 08:50:59
【问题描述】:

我想知道 Vue Router 是否可以根据 URL 中传递的参数显示不同的布局?

考虑以下网址:

  • /admin/forms/待处理
  • /admin/forms/approved
  • /admin/forms/拒绝
  • /admin/forms/categories

前 3 个链接与某些表单对象的状态有关,并将使用挂起/批准/拒绝状态将参数作为状态过滤器传递给表单 API。但是,对于类别,我希望它显示一个列出所有类别的视图。

我知道这可以通过使用两个不同的路由对象来实现——一个匹配/admin/forms/categories,一个匹配/admin/form/:status,但我想知道是否可以将两者结合起来,或者有一种方法来创建两条路线,因此我定义它们的顺序无关紧要(例如,如果我将类别路线放在状态路线下方,那么类别视图将不会显示)。为此,我认为 (/admin/forms/(:status(?!categories)) 之类的东西会起作用,但我从 Vue Router 收到“没有重复”的错误。

这是可以在 Vue Router 中实现的吗?我更乐意继续定义这两条不同的路线,只是想知道是否有更有效的方法来做到这一点?

谢谢!

=====

更新:不要问我为什么,但我在这里引用了 Vuex,而它应该是 Vue Router,d'oh

【问题讨论】:

  • 对我来说,理解你想要什么有点困难。如果您给出一些与您想要的匹配的 URL 示例,以及一些不匹配的 URL 示例,将会更清楚。另外,我想知道冒号:是从哪里出现的。
  • 嗨@virolino,感谢您的回复基本上,我有一个场景,其中有 2 个匹配的 URL 模式,但我希望它们与 2 个不同的视图相关 - 例如,如果有人去 /admin/forms/pending ,它需要显示状态为待处理的表单,但是如果它们转到/admin/forms/categories,它需要列出与表单分开的表单类别。我只是想看看是否有办法在一个规则中做到这一点,而不是有 2 个。我希望这有助于解决问题?

标签: regex vue.js vue-router


【解决方案1】:

通过向页面 /admin/form/ 传递参数,您可以拥有两个组件,一个用于前三个具有一种类型布局;一个用于具有不同布局的类别。 使用 v-if ... v-else 在它们之间切换。

【讨论】:

  • 嗨@Phoenix。这是一个很好的呐喊——我可以检查 :status 参数来确定用户打算使用什么路线,但是我更喜欢保持视图分离,主要是因为我对这样的东西很挑剔!不过这是个好主意
猜你喜欢
  • 2015-04-22
  • 2021-02-22
  • 2012-08-20
  • 1970-01-01
  • 2021-05-26
  • 2018-08-04
  • 2018-06-23
  • 2017-12-13
  • 1970-01-01
相关资源
最近更新 更多