如何在 vuetify 中使用 v-btn 过滤产品列表?
How to filter a product list using v-btn in vuetify?
我目前正在尝试使用按钮过滤对象列表。
我知道 v-btn 和 v-card 循环目前并不相互依赖,但我无法弄清楚如何 link 这两个部分在按下各自的按钮时仅正确显示正确的类别.
感谢您的帮助!
<v-row class="my-4">
<v-btn
v-for="category in categories"
text
class="underline"
route :to="category.route"
@click="category.function"
>{{ category.text }}</v-btn>
</v-row>
<v-row
justify="start">
<v-card
v-for="product in products"
:key="product.name"
class="ma-3 text-center">
<v-img
:src="product.src"
class="mc mt-2"
>
</v-img>
<v-card-title
class="bold justify-center">
<h4>{{ product.name }}</h4>
</v-card-title>
</v-card>
</v-row>
categories: [
{ text: 'All', function: "all()" },
{ text: 'Fruits & Veggies', function: "fruitsVeggies()" },
{ text: 'Baking', function: "baking" },
{ text: 'Gadgets', function: "gadgets" },
{ text: 'Cutting Boards', function: "cuttingBoards"}],
products: [{...}, {...}, etc]
computed: {
all() {
return this.products.filter(product => {
return product
})
},
fruitsVeggies() {
return this.products.filter(product => {
return product.category === 'Fruits & Veggies'
})
},
baking() {
return this.products.filter(product => {
return product.category === 'Baking'
})
},
cuttingBoards() {
return this.products.filter(product => {
return product.category === 'Cutting Boards'
})
}
Vue computed properties return 动态值
当您将 baking
作为函数调用时,它应该在控制台中抛出一个错误;它不是函数,而是 属性
相反,您可以定义一个名为 filteredProducts
的计算 属性,它根据存储在数据中的内容更改过滤器,然后循环遍历该过滤器
data() {
productFilter: "all"
}
computed: {
// your computed values
filteredProducts() {
if (this.productFilter === "all") {
return this.all;
}
// etc. For all filters
}
}
然后在您的模板中:
<v-row
justify="start"
>
<v-card
v-for="product in filteredProducts"
我目前正在尝试使用按钮过滤对象列表。
我知道 v-btn 和 v-card 循环目前并不相互依赖,但我无法弄清楚如何 link 这两个部分在按下各自的按钮时仅正确显示正确的类别.
感谢您的帮助!
<v-row class="my-4">
<v-btn
v-for="category in categories"
text
class="underline"
route :to="category.route"
@click="category.function"
>{{ category.text }}</v-btn>
</v-row>
<v-row
justify="start">
<v-card
v-for="product in products"
:key="product.name"
class="ma-3 text-center">
<v-img
:src="product.src"
class="mc mt-2"
>
</v-img>
<v-card-title
class="bold justify-center">
<h4>{{ product.name }}</h4>
</v-card-title>
</v-card>
</v-row>
categories: [
{ text: 'All', function: "all()" },
{ text: 'Fruits & Veggies', function: "fruitsVeggies()" },
{ text: 'Baking', function: "baking" },
{ text: 'Gadgets', function: "gadgets" },
{ text: 'Cutting Boards', function: "cuttingBoards"}],
products: [{...}, {...}, etc]
computed: {
all() {
return this.products.filter(product => {
return product
})
},
fruitsVeggies() {
return this.products.filter(product => {
return product.category === 'Fruits & Veggies'
})
},
baking() {
return this.products.filter(product => {
return product.category === 'Baking'
})
},
cuttingBoards() {
return this.products.filter(product => {
return product.category === 'Cutting Boards'
})
}
Vue computed properties return 动态值
当您将 baking
作为函数调用时,它应该在控制台中抛出一个错误;它不是函数,而是 属性
相反,您可以定义一个名为 filteredProducts
的计算 属性,它根据存储在数据中的内容更改过滤器,然后循环遍历该过滤器
data() {
productFilter: "all"
}
computed: {
// your computed values
filteredProducts() {
if (this.productFilter === "all") {
return this.all;
}
// etc. For all filters
}
}
然后在您的模板中:
<v-row
justify="start"
>
<v-card
v-for="product in filteredProducts"