首页 > 解决方案 > 如何让 vue 路由器正确地将对象推送到 URL 查询字符串,而不是“[Object Object]”?

问题描述

我花了几天的时间试图弄清楚这一点,但我很难过。具体来说,我说的是filters密钥,它一直显示为filters=%5Bobject%20Object%5D.

这是我当前不需要的查询字符串的示例:

?items_page=1&items_per_page=50&sort_by=created_at&sort_dir=desc&filters=%5Bobject%20Object%5D

我的目标是使用与此示例相同的概念来显示查询字符串:

?filters[event.since][0][type]=eq&filters[event.since][0][value]=all&filters[error.status][0][type]=eq&filters[error.status][0][value]=closed&sort=last_seen

这是我在进行 axios 调用之前的代码片段:

      @$router.push
        query:
          items_page: page
          items_per_page: @itemsPerPage
          sort_by: @sortBy
          sort_dir: @sortDir
          filters: @filtersComputed

@filtersComputed从 VueDevTools 中获得的是:{"auction_id":["1","2"],"consignor_id":["20418"]}

我尝试过的事情:

  1. 使用JSON.stringify(@filtersComputed)- 虽然这很有帮助,但这不是 Vue Router文档如何做到的,我遇到了问题。

我在 vue-router 3.0.6 和 vue 2.5.17 上。如果有任何其他支持信息,请告诉我,我会提供。

编辑1:

@skirtle 提到我的示例与我的实际数据无关,所以这是我想要获得类似以下内容的查询字符串。我并不挑剔,我只需要能够看到 URL 中的数据,以便人们可以相互共享搜索结果:

?items_page=1&items_per_page=50&sort_by=created_at&sort_dir=desc&filters[auction_id]=1&filters[auction_id]=2&filters[consignor_id]=20418

编辑2:

如果我使用,这就是查询字符串的样子JSON.stringify(@filtersComputed)

?items_page=1&items_per_page=50&sort_by=created_at&sort_dir=desc&filters=%7B%22auction_id%22%3A%5B%221%22,%222%22%5D,%22consignor_id%22%3A%5B%2220418%22%5D%7D

标签: vue.jsvuejs2coffeescriptvue-router

解决方案


推荐阅读