В Vuejs
есть поле input
, в которое пользователь может ввести текст для поиска элемента.
Код работает при нормальном поиске. Как заставить фильтр работать для вложенных элементов, чтобы пользователь мог вводить поиск на основе значения элемента?
Например: если пользователь вводит Seat, массив должен быть
sales:[
{
id: 2,
type: "Bike2",
number: 3000,
item: [
{
id: 400,
name: "Seat"
},
{
id: 200,
name: "Handle"
}
]
}]
HTML:
<div id="container">
<input type="text" placeholder="enter text" v-model="value">
<p>{{ value }}</p>
<div v-for=" sale in filteredList">
{{sale.type}}
</div>
<!-- <div v-for=" sale in filteredNestedList">
{{sale.type}}
</div> -->
</div>
Фильтрация:
new Vue({
el: "#container",
data: {
value: "",
sales: [
{
id: 1,
type: "Bike1",
number: 2000,
item: [
{
id: 100,
name: "Wheel"
},
{
id: 200,
name: "Handle"
}
]
},
{
id: 2,
type: "Bike2",
number: 3000,
item: [
{
id: 400,
name: "Seat"
},
{
id: 200,
name: "Handle"
}
]
}
]
},
computed: {
//Nested
filteredNestedList() {
return this.sales.filter((sale) => {
return sale.item.filter((item)=>{
return item.name.toLowerCase().includes(this.search.toLowerCase());
})
});
},
//Works for items which are not nested
filteredList() {
return this.sales.filter((sale) => {
return sale.type.toLowerCase().includes(this.value.toLowerCase());
});
},
},
});