<template>
<el-table
:data="filterTableData"
>
<!-- 姓名 -->
<el-table-column prop="name" label="姓名" width="150" />
<!-- 搜索框 -->
<el-table-column align="right">
<template #header>
<el-input v-model="search" placeholder="输入关键字" />
</template>
</el-table-column>
<el-table-column align="left">
<template #header>
<el-button class="searchButton" @Click="changeData()">搜索</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script lang="ts" setup>
import {ref } from "vue";
//从后台获取的数据
let tableData: any = [];
// 绑定的表格数据
let filterTableData = ref();
// 搜索框中的数据
const search = ref("");
//把接口写上,里面是搜索内容的数据类型
interface User {
name: string;
}
//点击按钮,刷新表格数据
const changeData = () => {
getTableData();
};
// 获取table数据,并过滤
const getTableData = () => {
getVolunteerList().then((res) => {
tableData = res.data;
filterTableData.value = tableData.filter(
(data: User) =>
!search.value ||
data.name.toLowerCase().includes(search.value.toLowerCase())
);
});
};
getTableData();
</script>
在ElementPlus官网给的样例中是这样的:
const filterTableData = computed(() =>
tableData.filter(
(data) =>
!search.value ||
data.name.toLowerCase().includes(search.value.toLowerCase())
)因为我需要获取后台数据所以我得在外边使用
const filterTableData = ref();然后在里面这样写
const getTableData = () => {
getVolunteerList().then((res) => {
tableData = res.data;
filterTableData = computed(() =>
tableData.filter(
(data) =>
!search.value ||
data.name.toLowerCase().includes(search.value.toLowerCase())
)
)
});
};想要在表格中正确显示数据必须是filterTableData.value =。。。。。。,但是这样写就会报错,无奈选择了通过点击按钮来刷新数据的方式。如果有更好的方法欢迎指导!
版权声明:本文为qq_45820271原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。