最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

关于vueElement-uiinput搜索与修改的方法

来源:动视网 责编:小采 时间:2020-11-27 20:11:50
文档

关于vueElement-uiinput搜索与修改的方法

关于vueElement-uiinput搜索与修改的方法:本文仅供参考,提供思路!html:<template> <el-autocomplete popper-class="my-autocomplete" custom-item="my-remote" v-model="state" :fetch-suggestions=
推荐度:
导读关于vueElement-uiinput搜索与修改的方法:本文仅供参考,提供思路!html:<template> <el-autocomplete popper-class="my-autocomplete" custom-item="my-remote" v-model="state" :fetch-suggestions=


本文仅供参考,提供思路!

html:

<template>
 <el-autocomplete popper-class="my-autocomplete" custom-item="my-remote" v-model="state" :fetch-suggestions="querySearch" placeholder="默认空" icon="close" :on-icon-click="handleIconClick">
 </el-autocomplete>
</template>

js:

<script>
import Vue from 'vue'
Vue.component('my-remote', {
 functional: true,
 render: function(h, ctx) {
 var item = ctx.props.item;
 let str = h('li', ctx.data, [
 h('p', { attrs: { class: 'name' } }, [item.value]),
 h('span', { attrs: { class: 'addr' } }, [item.address])
 ]);
 if (item.str) { // 根据参数不同 修改原模版结构
 str = h('center', { attrs: { class: 'ems' } }, [item.str])
 }
 return str
 },
 props: {
 item: { type: Object, required: true }
 }
});

export default {
 data() {
 return {
 restaurants: [],
 state: '',
 timeout: null,
 _that: {} // 记录this,用来发起http请求
 };
 },
 methods: {
 querySearch(queryString, cb) {
 let restaurants = this.restaurants;
 if (restaurants.length > 0) { // 如果参数都没变化,则使用缓存数据,避免请求沉积
 let results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
 cb(results);
 } else {
 const qtype = ‘参数’;
 this._that.$http('/inner', { qtype: qtype }) 
 .then((res) => {
 restaurants = this.loadAll(res);
 this.restaurants = restaurants;
 let results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
 cb(results);
 })
 .catch((err) => {
 restaurants = this.loadAll();
 let results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
 cb(results);
 });
 }
 },
 createFilter(queryString) {
 return (restaurant) => {
 if (restaurant.str) return false;
 return (restaurant.value.indexOf(queryString) >= 0);
 };
 },
 loadAll(data) {
 let serier = [];
 if (data) {
 for (let i = 0, l = data.length; i < l; i++) {
 let a = data[i];
 let b = '';
 if (typeof a === "object") {
 b = a[1];
 a = a[0];
 }
 serier.push({ "value": a, "address": b })
 }
 } else { // 如果没有请求到数据,则显示暂无数据!
 serier.push({ "str": '暂无数据' })
 }
 return serier;
 },
 handleIconClick(ev) {
 this.state = "";
 }
 },
 mounted() {
 this._that = this;
 }
}
</script> 

css:

<style lang="scss">
.my-autocomplete {
 li {
 line-height: normal !important;
 padding: 7px !important;

 .name {
 text-overflow: ellipsis;
 overflow: hidden;
 }
 .addr {
 font-size: 12px;
 color: #b4b4b4;
 }

 .highlighted .addr {
 color: #ddd;
 }
 }
 .ems {
 font-size: 12px;
 color: #b4b4b4;
 }
}
</style> 

大致方法就是这样,可以根据自己需要再改动!

文档

关于vueElement-uiinput搜索与修改的方法

关于vueElement-uiinput搜索与修改的方法:本文仅供参考,提供思路!html:<template> <el-autocomplete popper-class="my-autocomplete" custom-item="my-remote" v-model="state" :fetch-suggestions=
推荐度:
标签: VUE 搜索的 input
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top