【关于Element UI中el-autocomplete组件】一、el-autocomplete组件添加底部固定按钮

小伙伴们,不知道大家再开发过程中使用el-autocomplete时候会不会遇到需要在下拉建议值中加入自定义按钮,例如添加按钮之类的,如图:
在这里插入图片描述
那么这个按钮是如何加上去的呢?
首先我们在这个建议值列表中设置一个字段is_add如果这个字段为true那么就可以让他显示出来,
话不多说上代码:
首先是组件的使用:

<el-autocomplete
   class="voucher-subject-input"
   :ref="'inputcredit_2_'+index"
   :popper-append-to-body="false"
   :class="{ 'subject-opacity': voucher.items[index].showText }"
   v-model="voucher.items[index].subjectName"
   value-key="name"
   :fetch-suggestions="querySearch"
   :highlight-first-item="true"
   @select="handleSelectSubject($event,index)"
   @focus="handleFocusSubject($event,index)"
   >
   <!-- 下一篇小编为大家带来这里使用:popper-append-to-body="false"时候,又要监听@blur与@select事件会发生什么,该怎么解决 -->
  <template slot-scope="{ item }">
     <el-button
       v-if="item.is_add"
       type="primary" plain
       style="width: 100%;position: absolute;bottom: 0px;left: 0px;"
       class="add-button"
       @click="accAddBtn()"
       >
       添加
    </el-button>
 </template>
</el-autocomplete>

vue部分(在methods中使用如下方法):

//会计科目返回查询结果
querySearch(queryString, cb) {
  // console.log("会计科目返回查询结果",results)
  var restaurants = this.selectArrObj.SubjectsList;
  var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
  results = results.length > 0 ? results : [{name: '没有匹配项'}]
  //这里给列表中的每串数据都加上is_add:false控制组件部分的按钮显示
  for (let i = 0;i<results.length;i++){
  	results[i].is_add = false
  }
  //注意的是这里要加上name,因为我是根据name模糊查询的,不然会报错,导致不可用
  results.push({name:'',is_add:true});
  // 调用 callback 返回建议列表的数据
  cb(results);
},
//会计科目查询(模糊查询)
createFilter(queryString) {
  return (restaurant) => {
  	return (restaurant.name.toLowerCase().indexOf(queryString.toLowerCase()) !== -1);
  };
 },

这就是把按钮添加到el-autocomplete组件建议值下拉列表的大致部分,
那么,这里小编先带大家了解一下为什么这里要使用:popper-append-to-body=“false”,我们看文档可以看到
在这里插入图片描述
如果使用默认的true,查看dom结构发现是因为下拉列表的class是插入至body下的,而不是vue app 下。所以我们使用深度选择器是没办法控制他的css样式的。
因此这里我们要使用false,让他在vue app下。然后在css中我们就可以使用深度选择器,调整下拉框的底部内边距,使按钮能够置于最底下不会挡到选项。

<style scoped>
    /deep/ .el-scrollbar__wrap{
      margin-bottom: 30px;
      overflow-x: hidden;
    }
    /deep/ .el-autocomplete-suggestion__list{
      padding-bottom: 50px;
    }
</style>

你们猜猜小编来使用:popper-append-to-body="false"后小编会遇到什么坑呢?
下一篇为你们揭晓。
好了,快试试小编的这个方法在你那能不能行得通吧~如果你有什么更好的解决方法记得跟小编分享哦

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI el-autocomplete 是一个自动完成输入框组件,可以帮助用户输入并从预设的选项选择。 要使用 el-autocomplete 组件,首先需要引入 Element UI 的样式和 JavaScript 文件。然后在您的 Vue 组件使用 el-autocomplete 组件即可。 以下是一个简单的示例代码,展示如何使用 Element UIel-autocomplete 组件: ```html <template> <div> <el-autocomplete v-model="selectedValue" :fetch-suggestions="querySearch" placeholder="请输入内容" @select="handleSelect" ></el-autocomplete> </div> </template> <script> export default { data() { return { selectedValue: '', options: ['选项1', '选项2', '选项3', '选项4'] }; }, methods: { querySearch(queryString, cb) { const results = queryString ? this.options.filter(option => option.includes(queryString)) : this.options; // 模拟异步请求,可以根据实际情况进行调整 setTimeout(() => { cb(results); }, 200); }, handleSelect(value) { console.log('Selected value:', value); } } }; </script> ``` 在上面的代码,我们通过 `v-model` 指令将用户选择的值绑定到 `selectedValue` 变量上。通过 `fetch-suggestions` 属性指定一个函数来获取匹配的选项列表,这我们使用 `querySearch` 方法来实现自定义的搜索逻辑。`placeholder` 属性用于设置输入框的提示文本。通过 `@select` 事件监听选择事件,并在 `handleSelect` 方法处理选择事件。 以上是一个基本的使用示例,您可以根据自己的需求进行定制和扩展。希望能对您有所帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值