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 相关文章推荐
用js解决数字不能换行问题
Aug 10 Javascript
原来Jquery.load的方法可以一直load下去
Mar 28 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
Prototype源码浅析 String部分(四)之补充
Jan 16 Javascript
Bootstrap菜单按钮及导航实例解析
Sep 09 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
Dec 23 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
如何检测JavaScript中的死循环示例详解
Aug 30 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
自动分页的不完整解决方案
2007/01/12 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
浅析php header 跳转
2013/06/17 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
python+django加载静态网页模板解析
2017/12/12 Python
python正则表达式面试题解答
2020/04/28 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
python 代码运行时间获取方式详解
2020/09/18 Python
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
美容院考勤制度
2014/01/30 职场文书
经典安踏广告词
2014/03/21 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
消夏晚会主持词
2015/06/30 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS