Javascript 如何在Vue.js中将响应结果与路由动态参数结合起来动态获取数据
这是我第一次从url参数中动态获取对象参数。我知道我可以使用Javascript 如何在Vue.js中将响应结果与路由动态参数结合起来动态获取数据,javascript,json,vue.js,Javascript,Json,Vue.js,这是我第一次从url参数中动态获取对象参数。我知道我可以使用this.$route.params.[somelink参数]来获取url参数。我知道如何获取响应结果并将其存储到主题中,例如this.response=res 但问题来了: 假设我有这样一个Url:https://myUrl.com/some-campaign/:packageCategory 我试图像这样存储参数: const packageCategory=this.$route.params.packageCategory 这是
this.$route.params.[somelink参数]
来获取url参数。我知道如何获取响应结果并将其存储到主题中,例如this.response=res
但问题来了:
假设我有这样一个Url:https://myUrl.com/some-campaign/:packageCategory
我试图像这样存储参数:
const packageCategory=this.$route.params.packageCategory
这是我的回应对象的例子:
{
packageCategory: {
promoA: [
{
id: promoA-0001
},
{
id: promoA-0002
},
{
id: promoA-0003
},
{
id: promoA-0004
}
],
promoB: [
{
id: promoB-0001
}
],
promoC: [
{
id: promoC-0001
},
{
id: promoC-0002
},
{
id: promoC-0003
}
],
promoD: [
{
id: promoD-0001
},
{
id: promoD-0002
}
],
}
}
我想要实现的是:
如何从Url动态获取数据对象,并根据Url参数将其与结果相结合,从packageCategory获取对象
我试过的方法是这样的:
URL:https://myUrl.com/some-campaign/promoA
{
promoA: [
{
id: promoA-0001
},
{
id: promoA-0002
},
{
id: promoA-0003
},
{
id: promoA-0004
}
],
}
包装类别:promoA
{
promoA: [
{
id: promoA-0001
},
{
id: promoA-0002
},
{
id: promoA-0003
},
{
id: promoA-0004
}
],
}
目标:从如下参数动态获取对象。packages=result.promoA
{
promoA: [
{
id: promoA-0001
},
{
id: promoA-0002
},
{
id: promoA-0003
},
{
id: promoA-0004
}
],
}
第一次尝试:
const packageCategory = this.$route.params.packageCategory;
getPackageCampaign().then((result) => {
this.packages = `${JSON.parse(result)}.${packageCategory}`;
console.log("cek result : ", this.packages);
})
输出提示错误:
Uncaught(in promise)语法错误:JSON.parse()位置1处的JSON中意外的标记o
第二次尝试:
const packageCategory = this.$route.params.packageCategory;
getPackageCampaign().then((result) => {
this.packages = `${result}.${packageCategory}`;
console.log("cek result : ", this.packages);
})
输出:
[object object].promoA
{
promoA: [
{
id: promoA-0001
},
{
id: promoA-0002
},
{
id: promoA-0003
},
{
id: promoA-0004
}
],
}
用这种方法能解决这个问题吗?或者有其他方法可以实现我的目标吗?在JS中,您可以使用索引器语法访问对象属性:
A={
答:1,,
b:{
c:2
}
}
设B=A['A']//B=1
让成员='b'
设C=A[member]//C==A.b
因此,在您的情况下是这样的(取决于您的数据的真实结构…这在您的问题中并不十分清楚)
getPackageCampaign()。然后((结果)=>{
//假设结果已经是JS对象(JSON.parse的结果)
this.packages=result[this.$route.params.packageCategory];
log(“结果:,this.packages”);
})
谢谢你的回答,在我尝试之后,它会给我错误无法读取未定义的属性“promo80”
并且如果我使用result.packageCategory[packageCategory]
它会在数组中找到具有packageCategory值的索引吗?我认为这与我想要实现的完全不同,因为在我的例子中,我想要实现的是将packageCategory
放在结果之后。
将所有数组数据作为packages
对象值。谢谢您的参考,在我阅读了几次之后,我刚刚意识到,与使用点对象相比,第二种方法更好,比如使用数组,谢谢你的新知识。你能更新你的答案吗?我会给它一个解决的分数。如果我这样做,它就工作了this.packages=result[packageCategory]代码>,我使用它检查值console.log(“结果:,this.packages”)代码>如果您更新了答案,请告诉我,再次感谢^^