关于elementui的input的autocomplete的使用

项目中需要实现搜索框搜索时能自动提示可选项的功能,elementui的input组件有已经封装好的el-autocomplete可以使用,但是在使用中发现一些问题,记录一下

基础使用
// html部分
<el-autocomplete
              v-model="name"
        :fetch-suggestions="querySearchAsync"
        placeholder="请输入关键词"
        value-key="name"
        :trigger-on-focus="false"
        popper-class="autocompletePopper"
        :popper-append-to-body="false"
        class="my-autocomplete"
      >
      </el-autocomplete>
      // js部分
      querySearchAsync (queryStr, cb) {
        // 异步调用接口逻辑
        let results = 调用接口返回的数据中筛选出来的结果
        cb(results)
      },
自定义选项
// html部分
<el-autocomplete
              v-model="name"
        :fetch-suggestions="querySearchAsync"
        placeholder="请输入关键词"
        value-key="name"
        :trigger-on-focus="false"
        popper-class="autocompletePopper"
        :popper-append-to-body="false"
        class="my-autocomplete"
      >
        <template slot-scope="{ item }">
          <div class="custom-item" :title="item.name">
            {{ item.name }}
          </div>
        </template>
      </el-autocomplete>
      // js部分
      querySearchAsync (queryStr, cb) {
        // 异步调用接口逻辑
        let results = 调用接口返回的数据中筛选出来的结果
        cb(results)
      },
需要注意的点

1、value-key="name"不能少,如果缺失会导致点击数据下拉选项后输入框无法赋值的情况
2、v-model="name"不能少,如果缺失会导致输入框无法赋值的情况
3、自定义选项需要注意,slot-scope的参数就是item

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
input-autocomplete 是一个 Vue.js 组件,用于提供自动完成功能。以下是一个简单的使用示例: 1. 安装 input-autocomplete ``` npm install input-autocomplete --save ``` 2. 在 Vue 组件中引入 input-autocomplete ```javascript import InputAutocomplete from 'input-autocomplete' ``` 3. 在 Vue 组件中使用 input-autocomplete ```html <template> <div> <input-autocomplete :data="options" v-model="selectedOption" @select="onSelectOption" /> </div> </template> <script> export default { data() { return { options: [ { label: 'Apple', value: 'apple' }, { label: 'Banana', value: 'banana' }, { label: 'Cherry', value: 'cherry' }, { label: 'Durian', value: 'durian' }, ], selectedOption: null, } }, methods: { onSelectOption(option) { console.log('Selected option:', option) }, }, components: { InputAutocomplete, }, } </script> ``` 以上代码中,`data` 属性指定了自动完成列表中的选项数组,`v-model` 指定了选中的选项,`@select` 事件用于在选中选项时触发回调函数。 可以通过 `props` 设置以下属性: - `data`: 选项数组,每个选项都应该包含 `label` 和 `value` 两个属性。 - `value`: 绑定值,即选中的选项。 - `placeholder`: 输入框的提示文本。 - `disabled`: 是否禁用输入框。 - `debounce`: 输入框输入的防抖时间,单位为毫秒。 - `matchKey`: 匹配选项时使用的键名,例如可以设置为 `'label'` 或 `'value'`。 - `maxHeight`: 自动完成列表的最大高度,超过该高度时会出现滚动条。 - `highlight`: 是否高亮匹配的文本。 - `selectOnTab`: 是否在按下 Tab 键时选中第一个选项。 - `selectOnEnter`: 是否在按下 Enter 键时选中第一个选项。 - `noMatchText`: 没有匹配项时的提示文本。 更多详细用法请查看 input-autocomplete 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值