07.uni-app自动补全插件input-autocomplete的使用

Posted 潮汐先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07.uni-app自动补全插件input-autocomplete的使用相关的知识,希望对你有一定的参考价值。

前言

上次使用uni-app开发的司机端总算告一段落了,接下来却开始了真正的噩梦。为什么这么说呢,因为这次开发的是企业管理端,开发内容和具体的业务逻辑都要比司机端要复杂的多,只能硬着头皮上啊,谁叫咱这么「优秀」呢?!o(╥﹏╥)o

我说过我是一个菜鸟,是真的!这不刚一上来就遇到了一个难题:后台登录页面的企业名称输入框有个自动补全的功能,像下图这样

在这里插入图片描述

咱也不怎么会vue啊,怎么办?第一时间想到去搜插件呗,在uniapp插件市场自动补全,如下图

在这里插入图片描述

先说一下我为什么选择第二个?

首先呢,第二个在下载|赞赏|收藏上人数都比较多;

其次呢,第二个样式好看些,我之前说过我是纯后端,前端的东西七窍通了六窍,唯有一窍不通o(╥﹏╥)o

input-autocomplete的使用

1.使用HBuilderX导入插件

一搬情况下我都是选择上面一种使用HBuilderX导入插件,但是为了演示本次效果,我们选择使用HBuilderX导入示例项目

在这里插入图片描述

导入成功之后就像下面这样

在这里插入图片描述

2.运行示例项目

我们来运行一下作者提供的测试项目,我们这里选择运行到小程序模拟器,在示例项目中我没有加载数据,我们首先看下使用静态数据的情况

在这里插入图片描述

3.存在的问题

1).数据过渡曝光

上面我们看到了,当输入框刚获取焦点就自动加载了所有的数据,这个在实际开发者是不合理的。就像我这次做的企业管理端,一个企业用户准备登录系统,刚准备输入自己的企业名称结果看到了平台上所有入驻的企业,这个就属于数据的过度曝光

2).数据过多页面拉长的问题

我们修改改变静态数据的方法,将数据增加几条,如下

methods: {
		changeStaticData() {
				console.log('改变静态数据');
				this.autocompleteStringList= [
					'1汉字行',
					'1change data',
					'1guang zhou',
					{
						//自定义数据对象必须要有text属性
						text: '1hello',
						//其它字段根据业务需要添加
						key: '1hello key'
					},
					'1不 行',
					{
						//自定义数据对象必须要有text属性
						text: '1我是静态数据',
						//其它字段根据业务需要添加
						id: '1hz'
					},
					'2input-autoComplete',
					'3input-autoComplete',
					'4input-autoComplete',
					'5input-autoComplete',
					'6input-autoComplete',
					'7input-autoComplete',
					'8input-autoComplete',
					'9input-autoComplete',
					'10input-autoComplete',
				];
			}
		}

然后我们再次运行项目,结果看下图

在这里插入图片描述

4.解决问题

1).问题一解决方案

针对上面提到的问题一:我们需要在文本获取焦点的时候判断是否输入了内容,然后根据输入的内容去搜索结果并显示就可以了

首先我们为控件设置最小匹配长度min(必须最少输入几个字符才开启自动补全)

在这里插入图片描述

其次我们修改源码的方法getData,当输入长度小于min的时候,不显示选择框

在这里插入图片描述

这样我们的第一个问题就解决了,效果如下:

在这里插入图片描述

2).问题二解决方案

这个相比较与第一个就显得简单的多了,我们直接定位到源码最底部的样式,找到下方选择框.str-auto-complete-container的样式,修改成如下

<style>
  .str-auto-complete-container {
      min-width: 15%;
      height: auto;
      border: 1px solid #f3f3f4;
      position: absolute;
      z-index: 9997;
      background: #fff;
      // 开启处置方向的滚动条
      overflow-y:auto;
      // 最少显示1条记录的空间
      min-height: 53rpx;
      // 最多显示10条记录的空间
      max-height: 530rpx;

      .str-auto-complete-item {
        position: relative;
        padding: 10upx;
        z-index: 9999;
        // 更改以下每条记录的字体大小
        font-size: 28rpx;
      }
    }
</style

再次运行该示例项目,运行结果如下

在这里插入图片描述

解决完以上两个问题,该插件基本就可以使用了。当然了如果大家还有别的需求可以去uni-app的插件市场向作者反馈,也可像我一样自己捯饬一下。

以上是关于07.uni-app自动补全插件input-autocomplete的使用的主要内容,如果未能解决你的问题,请参考以下文章

vscode 安装 three.js 插件,实现自动补全功能

vscode自动补全c++

Linux Vim中自动补全Python插件:Pydiction

Linux Vim中自动补全Python插件:Pydiction

anaconda使用jupyter 多个内核共用 添加自动补全插件

anaconda使用jupyter 多个内核共用 添加自动补全插件