Javascript 从Vue JS中的计算筛选器返回多个值
我有一个搜索框,当用户输入艺术家名称时,它会显示与用户输入匹配的艺术家列表 我想在搜索中显示艺术家姓名旁边的艺术家图像 我有一个包含以下内容的对象。艺术家名称作为键,图像路径作为值Javascript 从Vue JS中的计算筛选器返回多个值,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我有一个搜索框,当用户输入艺术家名称时,它会显示与用户输入匹配的艺术家列表 我想在搜索中显示艺术家姓名旁边的艺术家图像 我有一个包含以下内容的对象。艺术家名称作为键,图像路径作为值 Radiohead: 'path_to_image', Elliott Smith:'path_to_image' 我有一个计算属性,用于过滤艺术家名称以进行搜索 computed: { filteredArtists() { return Object.keys(this.artistsList).filte
Radiohead: 'path_to_image',
Elliott Smith:'path_to_image'
我有一个计算属性,用于过滤艺术家名称以进行搜索
computed: {
filteredArtists() {
return Object.keys(this.artistsList).filter((artist) => {
return artist.match(this.artistName)
})
}
},
在我的模板中,我通过值进行迭代
<ul class="searchFliter" v-for="artist in filteredArtists">
<li v-text="artist"></li>
</ul>
我找不到一种方法用计算值来管理它。我可以轻松地迭代我的对象,并显示艺术家名称和艺术家图像,但不能过滤它
提前感谢如果您想坚持使用数据结构,那么您可以通过多种方式与匹配的艺术家一起显示图像。由于基本上是在计算属性中获取
artistList
对象的键列表,因此可以使用该键使用artistList[artist]
获取路径
<ul class="searchFliter" v-for="artist in filteredArtists">
<li>{{artist}} <img :src="artistList[artist]"></li>
</ul>
这里computed属性查找所有匹配项,然后创建一个包含名称和图像路径的新对象。在模板中使用它,如下所示:
<ul class="searchFliter" v-for="artist in filteredArtists">
<li>{{artist.name}} <img :src="artist.imagePath"></li>
</ul>
在这种情况下,您的计算属性就变成了
filteredArtists() {
return this.artistsList.filter(m => m.name.match(this.artistName))
}
这很好用。谢谢。我还有一个问题,如果我在
artist
是一个对象,您需要使用v-text
中的属性,如v-text=“artist.name”
。但是我想不出你为什么会使用v-text
。啊哈。非常感谢。我是Vue.js的新手,所以我不确定什么是最好的。但是我发现使用v-text比在html标记之间放东西更干净
[
{name: "Radiohead", imagePath: "path to image"},
{name: "Elliott Smith", imagePath: "path to image"}
]
filteredArtists() {
return this.artistsList.filter(m => m.name.match(this.artistName))
}