VueJS路由器$ routes.push无法推送查询参数

时间:2019-06-16 17:04:13

标签: vue.js vue-router

为什么这在地球上不起作用?

selectChanged(val) {

        let term_ids = [];
        let taxonomy = '';

        val.forEach((obj) => {
          term_ids.push(obj.term_id);
          taxonomy = obj.taxonomy;
        });

        let obj = this.$route.query;
        obj[taxonomy] = term_ids.join(',');

        this.$router.push({
          query: obj,
        });

      },

obj看起来像这样:

{education_levels: "33,36", candidate_countries: "304"}

如果我对上述对象进行硬编码,它将按预期工作,则VueJS Router将推送查询字符串,其外观如下:?education_levels=33,36&candidate_countries=304

但是,如果我通过query: obj,什么都不会发生...

1 个答案:

答案 0 :(得分:0)

您需要使用assignroute的所有属性。

Object.Assign$route中的进行新的复制,包括所有可枚举的OWN属性

另一个建议-

执行此操作时let obj = this.$route.query;-
Objects被存储到memory,因此,当您尝试复制object时,实际上是复制存储在内存中的address的{​​{1}}。 因此,当您执行此操作时-object 您会意外地更改原始值,因此需要克隆

代替克隆它-

obj[taxonomy] = term_ids.join(',');