Vue.js 根据路由更改Vue组件中的数据

Vue.js 根据路由更改Vue组件中的数据,vue.js,vuejs2,vue-component,vue-router,Vue.js,Vuejs2,Vue Component,Vue Router,我需要根据路由更改Vue组件中的数据。例如,加载飞机页面时,我希望数据包含飞机图像。如果随后加载了页面动物,那么我希望数据包含动物图像 可在此处查看该网站: Vue.component('子项'{ 道具:[‘照片’], 模板:` ` }); 常量子项={ 数据(){ 返回{ 照片:[ {img:'Images/Portfolio/airpair/image1.jpg'}, {img:'Images/Portfolio/airpair/image1.jpg'}, {img:'Images/

我需要根据路由更改Vue组件中的数据。例如,加载飞机页面时,我希望数据包含飞机图像。如果随后加载了页面动物,那么我希望数据包含动物图像

可在此处查看该网站:

Vue.component('子项'{
道具:[‘照片’],
模板:`
`
});    
常量子项={
数据(){
返回{
照片:[
{img:'Images/Portfolio/airpair/image1.jpg'},
{img:'Images/Portfolio/airpair/image1.jpg'},
{img:'Images/Portfolio/airpair/image1.jpg'}
],
}
},
模板:`
`
};
常量路由器=新的VueRouter({
模式:“历史”,
路线:[
{path:'/Portfolio/:id',component:subitem},
{路径:'/Portfolio',组件:item}
]
});

您可以使用Vue路由器的功能,并使用组件中的
this.$route.params.id
访问
:id

或者你可以。 只需将路由定义更改为
{path:'/Portfolio/:id',component:subitem,props:true},
并在
子项中定义
id
prop即可

您可以使用传递的
id
来过滤照片数组,例如:

computed: {
  getPhotosById(id) {
    return this.photos.filter(photo => photo.igm.startsWith(`Images/Portfolio/${id}/`))
  }
}

在模板do
v-for=“photos in getPhotosById($route.params.id)”

中,您可以使用
$route.params.id
检查您所在的站点,并基于此显示照片我如何在
const子项={data()中创建if语句{
太好了。我想为每个页面创建一个数组,比如飞机和动物等。我想使用
v-for=“subitem in$route.params.id”
但是,这会循环遍历每个字符,不会给出与数据数组匹配的完整单词,因为传递的
id
只是一个值,即目录名。您可以使用它筛选所有照片数组。编辑我的答案以添加一个示例…..感谢您的帮助。不过,必须将计算方法更改为方法
computed: {
  getPhotosById(id) {
    return this.photos.filter(photo => photo.igm.startsWith(`Images/Portfolio/${id}/`))
  }
}