关于el-input的远程搜索

<el-autocomplete
   v-model="keyword"
  :fetch-suggestions="querySearchAsync"
  placeholder="请输入内容"
  @select="handleSelect"
  @input="search"
  :trigger-on-focus="false"
>
	<el-button @click="gotoSearch"></el-button>
</el-autocomplete>

methods: {
	//选择联想关键词时触发
	async handleSelect(val) {
	    let vm = this;
	
	    await vm.getSearchData();
	    vm.showSearchList = true;
	
	    vm.$nextTick(() => {
	        vm.$refs.SearchComponents.getSearchType(
	            JSON.stringify(val.type)
	        );
	    });
	},
	//点击搜索时触发
	search() {
	    this.getSearchData();
	    let vm = this;
	
	    if (vm.keyWord.length == 0) {
	        vm.showSearchList = false;
	    }
	},
	//获取接口返回的联想关键词列表
	async querySearchAsync(queryString, cb) {
	    let vm = this;
	
	    if (vm.keyWord != "") {
	        let queryList = await vm.getSearchData();
	        queryList = queryList.map((item) => {
	            return { value: item.title, type: item.type };
	        });
	        cb(queryList);
	    }
	},
	getSearchData() {
	    let vm = this;
	
	    return new Promise((resolve, reject) => {
	        vm.$req
	            .doRequest({
	                alias: "dcs-search-globalSearch",
	                query: {
	                    keyword: vm.keyWord,
	                    pageNum: 1,
	                    pageSize: 10,
	                    type: "0",
	                },
	            })
	            .then((res) => {
	                if (res.code == 0) {
	                    vm.keywordList = res.data;
	                    vm.searchTyp =
	                        vm.keywordList.length != 0
	                            ? JSON.stringify(vm.keywordList[0].type)
	                            : "2";
	                }
	                return resolve(res.data);
	            });
	    });
	},
}

【注意】querySearchAsync的返回结果列表的数组的对象里要有key值名为value的值,
this.keyWordList = this.keyWordList = this.keyWordList.map((item) => {
return { value: item.title }; //结果列表里一定要有value值
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值