vue.js - 使用按钮(过滤器)在 v-data-table 中切换子组件
问题描述
我有一个带有 2 个按钮的父组件,我想将它们用作过滤器。子组件在 v-data-table 中被调用。
扫描网格(父):
<template>
<v-card class="ma-5" v-else>
<v-flex row xs12 class="pa-3 ml-3">
<div class="mr-3 mt-2">
<h3>Regrouper par :</h3>
</div>
<div>
<v-btn-toggle color="success" v-model="groupBy">
<v-btn
text
value="barCode"
class="lowerCase"
v-ripple="{ class: 'success--text' }"
>
Code barre
</v-btn>
<v-btn
text
value="productDef"
class="lowerCase"
v-ripple="{ class: 'success--text' }"
>
Définition de produit
</v-btn>
</v-btn-toggle>
</div>
</v-flex>
<v-card-text>
<v-layout align-center>
<v-data-table
:headers="headers"
:items="items"
item-key="StorageName"
show-expand
single-expand
:expanded="expanded"
hide-default-footer
@click:row="clickedRow"
>
<template v-slot:expanded-item="{ item }">
<td :colspan="12">
<ScanGridCode :item="item"></ScanGridCode>
</td>
</template>
<template v-slot:expanded-item="{ item }">
<td :colspan="12">
<ScanGridDef :item="item"></ScanGridDef>
</td>
</template>
</v-data-table>
</v-layout>
</v-card-text>
</v-card>
</template>
我想使用按钮切换的子组件在 v-data-table 的模板中称为 ScanGridCode 和 ScanGridDef。我试图在网上找到过滤按钮的例子,但找不到任何我想做的事情。
我正在使用 Vue 2.6.10 和 Vuetify 2.1.7
解决方案
您几乎已经完成了,因为您已经使用 v-model="groupBy" 设置了 v-btn-toggle。您仍然需要添加v-if
到每个模板,例如:
<template v-if="groupBy=='barCode'" v-slot:expanded-item="{ item }">
推荐阅读
- unity3d - Unity 3D:如何只面对卡一半
- javascript - 如何使用 yaml 转储 (js-yaml) 干净地处理未定义的值
- c - 为什么数组和指向它的指针存储在如此不同的位置?
- c - 在 C 语言(Windows 操作系统)的两台不同机器上使用带有客户端/服务器程序的路由器进行端口转发
- javascript - 当 Javascript 将数字输入解释为字符串时,我该怎么办?
- redis - 为什么这个 ZINTERSTORE 命令不执行 SUM?
- reactjs - 从数据库获取数据后,如何使我的输入文本在反应中可编辑
- javascript - 使用 RegEx 搜索和替换的 Javascript - 在 iMacros 中不起作用
- javascript - 手机屏幕导航栏隐藏内容
- php - 如何在表单中调用 php 函数?