【问题标题】:Vue router change query on current routeVue路由器更改查询当前路由
【发布时间】:2020-11-25 16:14:54
【问题描述】:

我有一个 URL,我正在使用此代码附加属性参数:

this.$router.push({ query: Object.assign({}, this.$route.query, { attributes: this.encodedAttributes() }) });

当我第二次调用该方法时,参数会再次添加。但是如果已经有属性参数,我希望它更新而不是添加另一个时间。非常感谢任何帮助。

【问题讨论】:

  • 你能发一个codesandbox.io 来显示这个吗?我无法重现该行为
  • @Dan:我已经添加了代码:codesandbox.io/s/wispy-snow-n41lf?file=/src/components/…,您能否只检查我想要的内容,当单击按钮时,属性参数应该附加到当前 url,如果属性参数已经存在,它应该更新该参数而不是向 url 添加另一个属性参数

标签: javascript vue.js vuejs2 vue-component vue-router


【解决方案1】:

(参考cmets中的代码链接)将字符串化的数组放入查询参数不会将其转换为查询参数。它也是嵌套对象的一部分,也不起作用。

dynamic_fields 设为对象:

data() {
  return {
    dynamic_fields: {},
  };
},

删除encodedAttributes并更改search

search() {
   this.$router.push({ query: this.dynamic_fields })
      .catch(failure => false);
}

.catch on $router push 防止导航失败错误。

这是updated sandbox

【讨论】:

  • 感谢您的回答,当我按下新的 url 按钮时,如果没有像 https://qp63o.csb.app/https://qp63o.csb.app/?attr0=0&attr1=1 这样的属性(不完整的属性参数 attr2=2 被删除)所以按下新的 url按钮应将属性参数更新为 url。
  • 按下按钮添加参数。我以为这就是你想要的。如果要更改它们,请更改dynamic_fields并按下按钮。
  • 好的,我试试看
  • 当我手动尝试删除最后一个参数 t.e. attr3=3 现在当我按下新的 url 按钮时,att3 应该被附加到现有的 url,在 vue.js 中是否可能?
  • 是的,我正在使用 for 循环,因为我将使用该循环获得新属性
猜你喜欢
  • 2019-08-26
  • 1970-01-01
  • 2021-02-06
  • 2019-06-18
  • 2019-10-18
  • 2019-03-28
  • 2020-07-26
  • 1970-01-01
  • 2016-09-01
相关资源
最近更新 更多