Vue:数据表上的搜索过滤器

时间:2020-01-31 07:50:20

标签: laravel vue.js nuxt.js

我有一个数据表列表,我想搜索客户的姓名。客户名称是从客户表(关系)中获取的。我尝试在代码上花更多的时间,但这还没有完成。抱歉,因为我是Vue js的新手。

enter image description here

文本字段

<div>
  <v-text-field
    label="Search Customer"
    solo 
    outlined
    dense
    v-model="search"
  ></v-text-field>
</div>

脚本

<script>
  export default {

	created() {
		this.fetchSearch();
	},

	watch: {
		search: {
			handler() {
				this.fetchSearch()
			}
		},
		deep: true,
	},

	data() {
		return {
			items: [],
			search: '',
		}
	},

	methods: {
		fetchSearch(){
			this.$axios.$get(`/api/return-sale?search=${this.search}`)
			.then(res =>{
				this.items = res.returnsale.data;
				console.log(res);
			})
			.catch(err =>{
				console.log(err.response);
			})
		},
	}
}

</script>

2 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,那么您需要一种在前端过滤表格的方法。 尝试执行此操作的一种方法是让计算变量返回已过滤列表。

computed: {
 tableItems () {
   if (!this.search) {
    return this.items;
   }

   return this.items.filter(item => item.custormer.indexOf(this.search) > -1)
 }
}

如果您要在其他地方使用此搜索功能,也可以查看filters

答案 1 :(得分:1)

您可以通过watch属性为此对象创建一个函数,然后过滤数据

watch: {
  search() {
    const data = this.items
    if (this.search.length > 0) { 
      if (data.filter(item => item.custormerName === this.search)) { 
        this.items = data.filter(item => item.custormerName === this.search);
      } else {
        this.search = '';
        this.fetchSearch();
      }
    } else {
      this.fetchSearch();
    }
  }
}