【问题标题】:Vue Router, construct a routeVue Router,构造路由
【发布时间】:2017-11-02 01:32:44
【问题描述】:

我正在我的应用程序中创建一个带有搜索字段的数据表,我想实现以下行为:

当用户键入研究时,URL 会更新。如果用户点击 在一个链接上并从他的导航器中点击“返回”,他回到了他的最后一个 搜索。

目前,我正在做以下事情:

export default {
  data () {
    return {
      search: ''
    }
  },
  watch: {
    search (value) {
      this.$router.replace('/products?search=' + value)
    }
  }
}

如您所见,我正在使用路由器的replace 功能。这让我可以让它发挥作用。而且它比push 方法更好,因为如果用户在搜索过程中点击“返回”,他会转到最后一页而不是最后一次研究,这正是我想要的。

但是,我不喜欢我写 URL 的方式。

我很想做这样的东西:

watch: {
  search (value) {
    let route = new Route(this.$route)

    route.query.search = value

    this.$router.replace(route.getPath())
  }
}

因为,让我们假设用户有其他参数,如分页或类似的东西,它们将被删除。我想要一个方法来获取我的实际 url 并添加/替换查询字符串参数。

这是我可以使用 Vue Router 实现的,还是我需要做其他事情:其他包/Vanilla JS?

【问题讨论】:

  • 你考虑过嵌套路由和/products/search/something路径吗?可能是更好的方法(或不是:)。

标签: javascript vue.js vue-router


【解决方案1】:

为什么不直接使用对象位置参数$router.replace?例如:

watch: {
  search (value) {
    this.$router.replace({ path: 'products', query: { search: value }})
  }
}

【讨论】:

    猜你喜欢
    • 2019-09-29
    • 2020-07-19
    • 2021-09-19
    • 2017-02-04
    • 1970-01-01
    • 2022-11-30
    • 2017-07-21
    • 2020-10-14
    • 2017-10-02
    相关资源
    最近更新 更多