vue Element-ui input 远程搜索与修改建议显示模版的示例代码


Posted in Javascript onOctober 19, 2017

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('div', { 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.toLowerCase()) === 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> 

总结

以上所述是小编给大家介绍的vue Element-ui input 远程搜索与修改建议显示模版的示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript实现生成GUID(全局统一标识符)
Sep 05 Javascript
jquery仿百度经验滑动切换浏览效果
Apr 14 Javascript
JS实现两表格里数据来回转移的方法
May 28 Javascript
jQuery实现ToolTip元素定位显示功能示例
Nov 23 Javascript
Bootstrap源码解读按钮(5)
Dec 23 Javascript
深入理解js中的加载事件
Feb 08 Javascript
解析Vue2.0双向绑定实现原理
Feb 23 Javascript
layUI实现列表查询功能
Jul 27 Javascript
解决vue cli使用typescript后打包巨慢的问题
Sep 30 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 Javascript
js实现自定义滚动条的示例
Oct 27 Javascript
原生js实现九宫格拖拽换位
Jan 26 Javascript
JavaScript适配器模式详解
Oct 19 #Javascript
JavaScript门面模式详解
Oct 19 #Javascript
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 #Javascript
AngularJS的$location使用方法详解
Oct 19 #Javascript
vue-cli 自定义指令directive 添加验证滑块示例
Oct 19 #Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 #Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 #jQuery
You might like
PHP脚本数据库功能详解(下)
2006/10/09 PHP
使用数据库保存session的方法
2006/10/09 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
对联广告js flash激活
2006/10/19 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
python中for语句简单遍历数据的方法
2015/05/07 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
运动会入场式解说词
2014/02/18 职场文书
考试作弊检讨书
2014/10/21 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
市场总监岗位职责
2015/02/11 职场文书