Vue.js filter通过在多个字段中搜索

use*_*623 3 vue.js

如何通过搜索多个搜索键进行过滤?

我正在尝试类似的方法,但是(当然)它不起作用:

<tr v-repeat="questions | filterBy search in 'reference','user.name','shop.shopName'">
Run Code Online (Sandbox Code Playgroud)

Jan*_*sen 5

filterBy自定义过滤器未记录在AFAIK中,但是您可以使用method制作自己的过滤器:

var demo = new Vue({
    el: '#demo',
    data: {
        search: 're',

        people: [
          {name: 'Koos', age: 30, eyes:'red'},
          {name: 'Gert', age: 20, eyes:'blue'},
          {name: 'Pieter', age: 12, eyes:'green'},
          {name: 'Dawid', age: 67, eyes:'dark green'},
          {name: 'Johan', age: 15, eyes:'purple'},
          {name: 'Hans', age: 12, eyes:'pink'}
        ]
    },
    methods: {
      customFilter: function(person) {
          return person.name.indexOf(this.search) != -1
          || person.eyes.indexOf(this.search) != -1
          ;
      }
    },
   
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>
<div id="demo">
    <input type="text" class="form-control" v-model="search"/>
    
    <br/>
    <table class="table">
      <thead>
        <tr>
          <th>name</th>
          <th>eyes</th>
          <th>age</th>
        </tr>
      </thead>
      <tr v-for="person in people | filterBy customFilter">
        <td>{{ person.name }}</td>
        <td>{{ person.eyes }}</td>
        <td>{{ person.age }}</td>
      </tr>
  </table>
</div>
Run Code Online (Sandbox Code Playgroud)


小智 1

从 Vue.js 版本0.12.11开始,可以通过以下方式实现:

<li v-repeat="user in users | filterBy searchText in 'name' 'phone'"></li>
Run Code Online (Sandbox Code Playgroud)

请务必查看官方指南:http: //vuejs.org/api/#orderBy