繁体   English   中英

Vue,Js:条件搜索过滤器

[英]Vue,Js : Conditional search filter

方案: 从下拉列表中选择一个表格列,然后选择< | > | = | >= | <= < | > | = | >= | <= < | > | = | >= | <= ,然后在搜索框中键入值。

column, condition, search input

// Select column name
<select class="dv-header-select" v-model="query.search_column">
    <option v-for="column in columns" :value="column">{{column}}</option>
</select>

// Select condition(<,>,<=,>=) 
<select class="dv-header-select" v-model="query.search_operator">
    <option v-for="(value, key) in operators" :value="key">{{value}}</option>
</select>

// Search value
<input type="text" class="dv-header-input" placeholder="Search"
    v-model="query.search_input">

表格行:

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

Js:

export default {



    data() {
        return {
        model: { data: [] },
        columns: {},
        query: {
            search_column: 'id',
            search_operator: 'equal',
            search_input: ''
        }
    },


    computed: {
      filteredRow: function(){

        // Values of column, condition, search string (E.g age > 20)
        console.log(this.query.search_column);
        console.log(this.query.search_operator);
        console.log(this.query.search_input);

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

我如何搜索桌子? 尝试了一下,但似乎没有任何效果。

遵循以下原则:

 var test = { computed: { filteredRow: function() { return this.model.data.filter(row => { var value = row[this.query.search_column]; switch (this.query.search_operator) { case "=": return value == this.query.search_input; case ">": return value > this.query.search_input; // ... } }); } } }; var vm = { model: {data: [{a: 1}, {a: 2}] }, query: {search_column: "a", search_operator: ">", search_input: 1 } }; console.log(test.computed.filteredRow.call(vm)); 

缺少:类型检查,类型转换,其他运算符,输入卫生条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM