Javascript 如何在Vue.js中将响应结果与路由动态参数结合起来动态获取数据

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 这是

这是我第一次从url参数中动态获取对象参数。我知道我可以使用
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”)如果您更新了答案,请告诉我,再次感谢^^