【问题标题】:Vue: Implementing Vue table searchVue:实现 Vue 表搜索
【发布时间】:2023-03-27 12:08:02
【问题描述】:

我在 vue 模板中有一个表格,搜索不工作,不知道我错过了什么。

<input type="text" class="dv-header-input" v-model="query.search_input"
  @keyup.enter="fetchRecords()">

还有桌子:

<tr v-for="row in filteredRow">
    <td v-for="(value, key) in row">{{value}}</td>
</tr>

还有 JS:

  export default {
    props: [
      'source', 
      'title',
    ],
    data() {
      return {
        model: { data: [] },
        columns: {},
        query: {
          search_input: ''
        },
      }
    },
    created() {
      this.fetchRecords()
    },
    methods: {
      fetchRecords() {
        var vm = this
        // Not original API, 
        axios.get(/get/Details)
          .then(function(response) {
            Vue.set(vm.$data, 'model', response.data.model)
            Vue.set(vm.$data, 'columns', response.data.columns)
          })
          .catch(function(response) {
            console.log(response)
          })
      }
    },
    computed: {
      filteredRow: function(){
        return this.model.data.filter((row) => {
        for(var key in row){
            return String(row[key]).indexOf(this.query.search_input);
          }
        });
      }
    }
  }

filteredRow,我是console.log(String(row[key]).indexOf(this.query.search_input))',这给了我30 times 0

我错过了什么,最好的方法是什么。

【问题讨论】:

  • for 循环永远不会超过row 中的第一个key
  • @jeff(终于有人了),那该怎么办呢?

标签: javascript arrays object search vue.js


【解决方案1】:

for 循环永远不会超过行中的第一个键。只有找到字符串时,您才想返回true

  filteredRow: function(){
    return this.model.data.filter((row) => {
      for(var key in row){
        if(String(row[key]).indexOf(this.query.search_input) !== -1){
          return true;
        }
      }
      return false;
    });
  }

【讨论】:

  • @Gammer 没问题。 indexOf 在找不到字符串时返回-1,你不能将它用作布尔值,因为如果在第一个字符处找到字符串,它会返回0
  • 有道理,完美。 filteredRow 将适用于基于条件的过滤器?,意味着从下拉列表中选择一个表列,然后从另一个下拉列表中选择一个运算符,例如=,然后输入您要针对该列搜索的数字?
  • 您必须为此编写一些新代码,因为这只是一个字符串过滤器
猜你喜欢
  • 2018-06-21
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 2021-08-21
  • 2020-05-16
  • 2021-11-08
  • 2023-03-02
相关资源
最近更新 更多