Element UI input输入框实现模糊查询
模糊查询
elementui提供的带输入建议,只能根据第一个名字进行检索,但是我们往往更多需要模糊搜索
代码片段
<el-autocomplete
class="inline-input"
v-model="state2"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
:trigger-on-focus="false"
@select="handleSelect"
></el-autocomplete>
data() {
return {
restaurants: [], //列表数据
state2: "", //内容
};
},
mounted() {
this.restaurants = this.loadAll();
},
methods: {
handleSelect(item) {
console.log(item);
},
querySearch(queryString, cb) {
var restaurants = this.restaurants;
var results = queryString
? restaurants.filter(this.createFilter(queryString))
: restaurants;
// 调用 callback 返回建议列表的数据
cb(results);
},
//检索名称第一个字或者模糊搜索该方法决定的
createFilter(queryString) {
return (state) => {
return (state.value.toLowerCase().indexOf(queryString.toLowerCase()) > -1);
//elementui写法是检索0
//return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
loadAll() {
return [
{ value: "港式小铺", address: "上海市长宁区金钟路968号15楼15-105室" },
{ value: "蜀香源麻辣香锅(剑河路店)", address: "剑河路443-1" },
{ value: "北京饺子馆", address: "长宁区北新泾街道天山西路490-1号" },
{
value: "饭典*新简餐(凌空SOHO店)",
address: "上海市长宁区金钟路968号9号楼地下一层9-83室",
},
{
value: "焦耳·川式快餐(金钟路店)",
address: "上海市金钟路633号地下一层甲部",
},
{ value: "动力鸡车", address: "长宁区仙霞西路299弄3号101B" },
{ value: "浏阳蒸菜", address: "天山西路430号" },
{ value: "四海游龙(天山西路店)", address: "上海市长宁区天山西路" },
{ value: "红辣椒麻辣烫", address: "上海市长宁区天山西路492号" },
{
value: "(小杨生煎)西郊百联餐厅",
address: "长宁区仙霞西路88号百联2楼",
},
{ value: "阳阳麻辣烫", address: "天山西路389号" },
{
value: "南拳妈妈龙虾盖浇饭",
address: "普陀区金沙江路1699号鑫乐惠美食广场A13",
},
];
},
}