vue.js - VueJS 路由器 $routes.push 无法推送查询参数
问题描述
为什么这不起作用?
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 路由器将推送查询字符串,它看起来像这样:?education_levels=33,36&candidate_countries=304
但是如果我通过query: obj
了,什么都不会发生...
解决方案
您需要assign
使用route
.
Object.Assign
制作 的 的新副本$route
,包括所有可枚举的 OWN 属性
还有一个建议——
当您执行此操作 时let obj = this.$route.query;
-
Objects
存储到,memory
因此当您尝试复制时,object
您实际上是在复制存储在内存中address
的位置。object
所以当你这样做时 -obj[taxonomy] = term_ids.join(',');
你会不小心改变原始值,所以需要克隆
而是克隆它-
let obj = { ... this.$route.query }
this.$router.push({
query: Object.assign({}, this.$route.query, obj),
});
推荐阅读
- python - 将groupby均值分配给python pandas中的条件列
- python - 组合/添加来自不同 word2vec 模型的向量
- javascript - 如何从指定字符串开始获取数组内的元素
- android - statusCode=SIGN_IN_REQUIRED, resolution=null 只有开发者 ID 可以登录 else 错误
- regex - 正则表达式使用 rename linux 命令重命名文件名
- c# - 在异步方法中多次调用 await 时使用哪个线程?
- swift - 折叠 Tableview 部分时出现约束错误
- c - 什么是我的代码上下文中的 UndefinedBehaviorSanitizer
- c++ - 等式测试功能
- java - Neo4j 3.5 全文搜索仅使用嵌入式 API 而不使用 Cypher