首页 > 其他分享 >elementUI远程搜索功能遇到的坑(el-autocomplete) 如果是提前加载出全量数据 去掉v-model.trim换为 v-model=“nameinputvalue”

elementUI远程搜索功能遇到的坑(el-autocomplete) 如果是提前加载出全量数据 去掉v-model.trim换为 v-model=“nameinputvalue”

时间:2023-07-11 18:35:41浏览次数:45  
标签:trim el queryString 远程 gmfmcItems model 数据 下拉框

elementUI远程搜索功能遇到的坑(el-autocomplete) 如果是提前加载出全量数据 去掉v-model.trim换为 v-model=“nameinputvalue”
原文链接:https://blog.csdn.net/CuiCui_web/article/details/95939746

本文主要是解决下拉框根据返回值隐藏     动态设置建议列表值等问题

  1. 结构写法
  2. <el-autocomplete
  3. v-model.trim="invoiceHeaderInformation.gmfMc"
  4. :fetch-suggestions="querySearch"
  5. :trigger-on-focus="false"
  6. type="text"
  7. :popper-class="className"
  8. placeholder="请输入名称"
  9. class="td_inputSearch"
  10. @select="handleSelect"
  11. />

在结构中需要注意的是 

:popper-class="className" 用来动态控制下拉框(建议列表)的样式

@select="handleSelect"  用来处理选择了建议列表某一项之后的操作

:fetch-suggestions="querySearch"  返回输入建议的方法,仅当你的输入建议数据 resolve 时,通过调用 callback(data:[]) 来返回它


定义数据

  1. className:'', // 动态设置远程下拉框的样式
  2. qympArrObject: [], // 远程下拉框的数组集合
  3. timeout: null, // 设置时间
  4. gmfmcItems: [], // 名称
  5. invoiceHeaderInformation:{gmfMc:''} // 双向绑定的数据

方法编写

  1. /** 客户名称搜索 */
  2. querySearch(queryString, cb) {
  3. // 调用 callback 返回建议列表的数据
  4. // cb(results)
  5. this.timeout = setTimeout(() => {
  6. var gmfmcItems = this.gmfmcItems
  7. var results = queryString ? gmfmcItems.filter(this.createFilter(queryString)) : gmfmcItems
  8. cb(results)
  9. }, 1000)
  10. },
  11. 由于返回的值有延时加载时间,故而这里的时间设置很重要,必须要设置,否则就显示不出来数据
  12. /** 创建客户名称搜索 */
  13. createFilter(queryString) {
  14. return (gmfmcItems) => {
  15. return (gmfmcItems.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
  16. }
  17. },
  18. /** 客户名称搜索下拉框数据定义 */
  19. loadAll() {
  20. var that = this
  21. return that.qympArrObject // 返回请求接口的数据
  22. },

/** 接口请求数据方法*/

  1. getList () {
  2. let that = this
  3. that.loading = true;
  4. axios({
  5. url: , // 查询接口 nologin/college
  6. method: 'post',
  7. data: {
  8. }
  9. }).then(res => {
  10.   // 在这里来获取返回的数据 this.qympArrObject.push
  11.   res.data.forEach((v, index) => {
  12. // 下拉框值进行赋值
  13. that.qympArrObject.push({ 'value': v.qymc }) // 必须是这种格式
  14. })
  15. // 渲染客户名称搜索下拉框的值
  16. this.gmfmcItems = this.loadAll()
  17. }).catch(error => {
  18. this.$notify({
  19. message: error.message,
  20. type: 'error'
  21. })
  22. that.loading = false
  23. throw error
  24. })
  25. },
  26. handleSelect(item) {
  27. const that = this
  28. setTimeout(() => {
  29. // 进行回显数据(远程搜索选择一条数据,对其他数据进行回显操作在这里进行处理)
  30. }
  31. }, 50)

监听调用

监听一个对象的方法

  1. 'invoiceHeaderInformation.gmfMc': {
  2. handler(newVal, oldVal) {
  3. // 当输入框的值的长度大于1才进行调用接口
  4. if (newVal.length > 1) {
  5. this.getList()
  6. // 当返回的数组没有数据的时候,给远程下拉框添加新的样式
  7. this.className = this.qympArrObject.length>0 ? '' : 'popperClassName'
  8. }else{
  9. // 当输入框的长度小于或等于1的时候,给远程下拉框添加新的样式
  10. this.className = 'popperClassName'
  11. }
  12. },
  13. deep: true
  14. }

这里涉及到一个需求定义,如果输入框的值是大于1的开始调用接口,否则就不显示下拉框;如果返回的有数值,显示下拉框,否则就不显示下拉框。


动态样式处理(覆盖elementUI的样式)

  1. <style lang="scss">
  2. // 动态给远程下拉框设置样式
  3. .popperClassName{
  4. display: none !important;
  5. position: static !important;
  6. }
  7. </style>

 

 

标签:trim,el,queryString,远程,gmfmcItems,model,数据,下拉框
From: https://www.cnblogs.com/sunny3158/p/17545620.html

相关文章

  • element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
    element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)原文链接:https://blog.csdn.net/wyhstars/article/details/81672195前段时间,在实现带输入建议并且支持模糊查询输入框的时候,发现了两个值得注意的小地方。整理出来,以供借鉴。废话不多说,直......
  • selenium登录cnblogs
    ###selenium登录cnblogs```python'''#1打开cnblogs,点进登录页面,输入用户名密码,点登录(可能会出现验证码)--》手动操作#2登录成功后----》拿到cookie---》保存到本地---》关闭浏览器#3开启selenium,打开浏览器---》把本地的cookie写入到当前浏览器中----》当前浏览器......
  • elementui文本框_element UI el-autocomplete组件 带输入建议的输入框
    elementui文本框_elementUIel-autocomplete组件带输入建议的输入框原文链接:elementui文本框_elementUIel-autocomplete带输入建议的输入框项目需求:需要用户在输入框中输入公司全名  但是为了避免用户输入不全  需要做一个带输入建议的输入框element组件:class......
  • 全局重写Element UI中的Message消息提示显示时长
    需求:Message消息提示显示时长过长环境:"vue":"2.6.12"、"element-ui":"^2.15.6"等解决步骤:1、在项目中找到main.js文件2、引人下面两个文件importElementUIfrom'element-ui';import'element-ui/lib/theme-chalk/index.css';3、重写$messa......
  • selenium
    PythonAutomationScriptsExamplesUseDjangoAndSeleniumDjangoisthemostpopularwebframeworkinthepythonworld.Youcanuseittocreateawebsitequicklyandsimply.Seleniumisthemostpopularwebsiteautomationtestingframework,itcanbeus......
  • 使用input标签的时候报错,提示Form elements must have labels: Element has no title
    使用input标签的时候报错,提示Formelementsmusthavelabels:ElementhasnotitleattributeElementhasnoplaceholderattribute大概就是下面这样其实规范化一下,加个label就可以了......
  • shell脚本-监控多台服务器磁盘利用率
    shell脚本-监控多台服务器磁盘利用率介绍第一步:实现免密登录服务器,为后续脚本免密登录做好准备。第二步:把要监控服务器的ip地址root用户端口port写入host.info文件中以便后续脚本从这个文件读取服务器信息。第三步:写shell脚本,先从host.info中拿到信息连接各个服务器,读取......
  • 分组查询时,select的字段是否一定要都在group by中
    分组查询时,select的字段是否一定要都在groupby中?分组查询关键字groupby通常和集合函数(MAX、MIN、COUNT、SUM、AVG)一起使用,它可以对一列或者多列结果集进行分组。例如要统计超市水果的种类,需要用count函数,要统计哪个水果价格最高,要用MAX()函数。一般情况下,我们在使用groupby的......
  • poj 2236 Wireless Network 并查集
    WirelessNetworkTimeLimit: 10000MSMemoryLimit: 65536KTotalSubmissions: 20499Accepted: 8608DescriptionAnearthquaketakesplaceinSoutheastAsia.TheACM(AsiaCooperatedMedicalteam)havesetupawirelessnetworkwiththelapcomputers,butanun......
  • cancel
    cancel取消已存在的打印任务补充说明cancel命令用于取消已存在的打印任务。语法cancel(选项)(参数)选项-a:取消所有打印任务;-E:当连接到服务器时强制使用加密;-U:指定连接服务器时使用的用户名;-u:指定打印任务所属的用户;-h:指定连接的服务器名和端口号。参数打印任务号:......