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 相关文章推荐
IE下JS读取xml文件示例代码
Aug 05 Javascript
javascript 获取iframe里页面中元素值的方法
Feb 17 Javascript
js调试工具Console命令详解
Oct 21 Javascript
jQuery中:checked选择器用法实例
Jan 04 Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 Javascript
Jquery操作cookie记住用户名
Mar 29 Javascript
有关jQuery中parent()和siblings()的小问题
Jun 01 Javascript
JSON 必知必会 观后记
Oct 27 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
May 02 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 Javascript
javascript的var与let,const之间的区别详解
Feb 18 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把数组值转换成键的方法
2015/07/13 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python基础教程之lambda表达式使用方法
2014/02/12 Python
一个超级简单的python web程序
2014/09/11 Python
python中list常用操作实例详解
2015/06/03 Python
Python程序中设置HTTP代理
2016/11/06 Python
python之生产者消费者模型实现详解
2019/07/27 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
开办饭店创业计划书
2013/12/28 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
教师节活动主持词
2014/04/02 职场文书
财务稽核岗位职责
2015/04/13 职场文书
法律讲堂观后感
2015/06/11 职场文书
新人入职感言
2015/07/31 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书