我用bootstrap vue生成了一个表,显示了系统搜索的结果.

结果表向用户显示记录,用户可以对其进行排序和筛选.

如何在bootstrap vue <b-table>元素生成的表头<th>下方添加搜索字段?

current table的屏幕截图:

wanted table的模型:

推荐答案

您可以使用top-row槽定制自己的第一排.下面是一个简单的例子.

new Vue({
  el: '#app',
  data: {
    filters: {
      id: '',
      issuedBy: '',
      issuedTo: ''
    },
    items: [{id:1234,issuedBy:'Operator',issuedTo:'abcd-efgh'},{id:5678,issuedBy:'User',issuedTo:'ijkl-mnop'}]
  },
  computed: {
    filtered () {
      const filtered = this.items.filter(item => {
        return Object.keys(this.filters).every(key =>
            String(item[key]).includes(this.filters[key]))
      })
      return filtered.length > 0 ? filtered : [{
        id: '',
        issuedBy: '',
        issuedTo: ''
      }]
    }
  }
})
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css"/><link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.css"/><script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js"></script><script src="//unpkg.com/babel-polyfill@latest/dist/polyfill.min.js"></script><script src="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.js"></script>

<div id="app">
<b-table striped show-empty :items="filtered">
  <template slot="top-row" slot-scope="{ fields }">
    <td v-for="field in fields" :key="field.key">
      <input v-model="filters[field.key]" :placeholder="field.label">
    </td>
  </template>
</b-table>
</div>

Note:我使用了computed属性来过滤项目,而不是b-table中的:filterprops ,因为如果过滤掉所有项目(包括自定义的第一行),它不会渲染行.这样,如果结果为空,我可以提供一个虚拟数据行.

Vue.js相关问答推荐

为什么在Vue.js中修改非react 性似乎是react 性的?

如何将 cogo toast PRIVE集成到nuxt3中?

Vue.js编译的render函数不起作用

Vue Router中.getRoutes()获取的路由顺序优化建议

将props传递给设置时的VueJS 3组合API和TypeScript类型问题:类型上不存在属性 user用户

使用上传组件而不触发 POST 请求

如何从特定索引呈现 v-for

如何在 vue.js 中包含当年的版权?

vue-test-utils:无法覆盖属性 $route,这通常是由于插件将该属性添加为只读值

此 set-cookie 已被阻止,因为它具有 samesite=lax

如何让 Vue (vue cli 3) 正确处理 GraphQL 文件?

Vue 3:模块 '"../../node_modules/vue/dist/vue"' 提示

在找不到图像源时设置替代图像

中文而不是英文的Element UI分页

组件已注册但未使用 vue/no-unused-components

带有 Google Auth Signin 的 Vuejs 全局函数

如何从扩展面板(Vuetify)中删除阴影?

Vue - 重用方法的最佳方式

使用 Vee-validate 禁用按钮,直到正确填写表单

在 vue.js 应用程序中将静态内容(例如国家代码)存储在哪里?