对不起,我使用Laravel ORM和Vue 2一起玩。
分析Json数据是一些问题..
laravel ORM
$banner = Banner::with('banner_img')->get();
return response()->json($banner);
Json数据
[{"id":10,"banner":"AIR","banner_img":[{"id":1,"img":"air_1.png","banner_id":10},{"id":2,"img":"air_2.png","banner_id":10}]},
{"id":11,"banner":"HOT","banner_img":[{"id":3,"img":"hot_1.png","banner_id":11},{"id":4,"img":"hot_2.png","banner_id":11}]},
{"id":12,"banner":"NEW","banner_img":[{"id":5,"img":"new_1.png","banner_id":12},{"id":6,"img":"new_2.png","banner_id":12}]}]
我的json数据有两个数组。
我想用Vue.js过滤这个json数据(banner_img:[' img'])。
Vue.js
var app = new Vue({
el: '#app',
data: {
banner:[],
search:'',
},
methods: {
getBannerData: function() {
axios.get('/case/ajax/33').then(response => {
this.banner = response.data.banner;
});
},
},
mounted: function() {
this.getBannerData();
},
computed: {
filteredList() {
return this.banner(value => {
return value.banner.banner_img.img.toLowerCase().includes(this.search.toLowerCase())
})
}
}
});
HTML
<input type="text" name="ImgFilter" v-model="search">
<div v-for="value in filteredList">
<img v-for="imgs in value.banner_img" :src="imgs.img" height="100">
</div>
然后我尝试return value.banner.banner_img.img
,但是错了..
请给我一些建议〜!谢谢!
答案 0 :(得分:1)
根据您的JSON示例,每个对象在属性banner_img
上都有一个值数组。因此value.banner.banner_img.img
不正确,因为value.banner
没有属性banner_img
。
试试这个:
filteredList() {
return this.banner.filter(value => {
return value.banner_img.filter(bannerImg => {
return bannerImg.img.toLowerCase().includes(this.search.toLowerCase());
});
});
}