赞
踩
el-select
展示选项,选项不多的情况下,我们可以进行手动下拉选择。可以利用搜索功能快速查找选项
el-select
添加filterable
属性即可启用搜索功能。<template> <el-select v-model="value" filterable placeholder="请选择"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> <script> export default { data() { return { options: [{ value: '选项1', label: '黄金糕' }, { value: '选项2', label: '双皮奶' }, { value: '选项3', label: '蚵仔煎' }, { value: '选项4', label: '龙须面' }, { value: '选项5', label: '北京烤鸭' }], value: '' } } } </script>
filter-method
来实现。filter-method
为一个Function
,它会在输入值发生变化时调用,参数为当前输入值。比如我们想用value来作为关键词搜索<template> <el-select v-model="value" filterable placeholder="请选择" :filter-method="filterValue"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> <script> export default { data() { return { list: [{ value: '选项1', label: '黄金糕' }, { value: '选项2', label: '双皮奶' }, { value: '选项3', label: '蚵仔煎' }, { value: '选项4', label: '龙须面' }, { value: '选项5', label: '北京烤鸭' }], value: '', options: [] // 筛选出来的选项 } }, mounted() { this.options = this.list; }, methods: { filterValue(query) { if (query !== "") { this.options = this.list.filter((item) => { // 这里是用的value选项筛选,默认是label return item.value.toLowerCase().indexOf(query.toLowerCase()) > -1; }); } else { this.options = []; } } } } </script>
这时候就是用的value来搜索了
从服务器搜索数据,输入关键字进行查找
filterable
和remote
设置为true
,同时传入一个remote-method
。remote-method
为一个Function
,它会在输入值发生变化时调用,参数为当前输入值。el-option
是通过v-for指令渲染出来的,此时需要为el-option
添加key
属性,且其值需具有唯一性,比如此例中的item.value
。<template> <el-select v-model="value" clearable filterable remote :remote-method="getDatas" :loading="loading" placeholder="请选择" > <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> <script> export default { data() { return { value: '', options: [], // 选项,从后端传递过来 loading:false } }, /* 获取选项列表 */ getDatas(key) { this.loading = true; datasGetByKeywords({ // 封装好的后端接口 keywords: key || "", // 关键字参数 }).then((res) => { this.loading = false; this.options = res.data; }); }, } </script>
这样我们的选项就是从后端服务器上获取的了,如何搜索就按后端接口规定的参数来
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。