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 相关文章推荐
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
js 操作符汇总
Nov 08 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
关于网页中的无缝滚动的js代码
Jun 09 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
Jun 14 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
SpringMVC+bootstrap table实例详解
Jun 02 Javascript
vue axios 简单封装以及思考
Oct 09 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
Oct 12 Javascript
Layui 解决表格异步调用后台分页的问题
Oct 26 Javascript
js canvas实现俄罗斯方块
Oct 11 Javascript
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
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修改Linux或Unix口令的方法分享
2012/01/30 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
python删除服务器文件代码示例
2018/02/09 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
客户代表自我评价范例
2013/09/24 职场文书
省文明单位申报材料
2014/05/08 职场文书
新员工入职感想
2015/08/07 职场文书