vue.js - b表中的vue js过滤器搜索
问题描述
我使用 b-table 显示数据,对于 json 我使用这个 https://jsonplaceholder.typicode.com/comments?_page=1&_limit=5
这里我显示限制为 5 的数据,在 b 表上我使用过滤器或搜索功能。
在这里我想找到一封名为Dallas@ole.me的电子邮件,该电子邮件位于第 2 页第 7 号 https://jsonplaceholder.typicode.com/comments?_page=2&_limit=5
当我搜索电子邮件时,为什么找不到它?
我希望如果我在第 2 或第 3 页搜索数据,它可以立即出现,您不必先到第 2 和第 3 页。
这是我的代码
<b-table class="table spacing-table" style="font-size: 13px;"
show-empty :items="mydata" :fields="fields" :current-page="currentPage" :per-page="0"
:filter="filter"></b-table>
<b-pagination style="justify-content: center;" size="sm" :total-rows="totalItems" v-model="currentPage" :per-page="perPage"></b-pagination>
和这个
return {
filter: null,
fields: [
{
key: 'id',
label: 'item',
sortable: true
},
{
key: 'name',
label: 'item',
sortable: true
},
{
key: 'email',
label: 'item',
sortable: true
},
{
key: 'body',
label: 'item',
sortable: true
},
{ key: 'actions', label: 'Doc' }
],
currentPage: 1,
perPage: 5,
totalItems: 0
}
created() {
this.fetchData()
},
computed:{
...mapState(['mydata'])
},
methods: {
async fetchData() {
var start = this.currentPage;
await this.$store.dispatch('getData', start).then(response => {
this.totalItems = parseInt(response.headers['x-total-count'], 10)
return response.data
})
},
filterGrid(val){
return !this.filter || JSON.stringify(val).includes(this.filter)
},
},
解决方案
按照官方文档,默认过滤只是过滤当前数据数组。
默认情况下,过滤在使用时应用于原始项目数组数据。b-table 为如何过滤数据提供了几个选项。
因此,当您使用服务器端分页时,您必须实现自定义过滤器,以便它可以从您的 API 中获取过滤后的数据。
推荐阅读
- html - Edge 中的 Google 图表打印版本错误?
- excel - 根据单选按钮选择组合(VBA Excel)用可变文本填充文本框
- ruby-on-rails - 主键和外键超出范围
- .htaccess - htaccess 404所有主机不匹配我的主机
- r - 取消引用 `rlang::expr` 中的循环变量
- angular - 错误:类型“字符串”上不存在属性“拆分”| 数组缓冲区'。“ArrayBuffer”类型不存在属性“split”
- c# - 如何为 Windows 窗体控件分配索引
- django - Django 类管理逻辑错误
- jenkins - 从 Jenkins 中的 Jacoco 插件分析中排除带有 @Data 表示法的类
- node.js - 使用 pg-promise 将 ColumnSet 列转换为几何