vue2+element-ui 问题 el-select 远程搜索出现 回显出现ID

项目场景:

用户进行远程搜索(remote-method),第二次搜索(可多次搜索) ,可进行clearable(清空输入框数据) ,数据过多collapse-tags合并,并且数据可以进行多选(multiple).reserve-keyword(多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词)

 


问题描述

   1、出现ID,可能大多用户出现的原因由于 数据类型不符合组件   需要String()转换为字符串,

   2、:key="val.value" :value="val.value" :label="val.label+‘’"

   3、这边出现的问题主要是与后端(JAVA)交互。




原因分析:

当时与后端(JAVA)交互解决搜索问题,使用的是与后端传递字符串,后端返回includes该字符串的对象,主要是为了搜索方便, 但是使用远程搜索出现了一些问题,到第二次搜索数据会将第一次数据,覆盖,导致第一次的数据ID没有匹配的value 导致最后回显 ID


解决方案:

后端(JAVA)将所有的输入框数据 返回, 前端本地进行数据 filter 回显数据.

 this.x.filter(item => {

                 return item.label.toLowerCase()

                .indexOf(query.toLowerCase()) > -1;

   });

  如后端返回数据不是前端所要对象可以  ~  value: item.x label: `${item.x}`

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于select远程搜索数据回显,可以使用下拉框插件如select2或chosen等。这些插件可以在输入框中输入搜索关键字,然后异步请求远程数据,将匹配的结果显示在下拉框中供选择。 当用户选择某一项时,可以将选项的值赋值给隐藏的input框,然后在表单提交时将该值提交到后端进行处理。 示例代码: HTML代码: ``` <!-- 引入select2插件 --> <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script> <!-- 输入框 --> <select id="search" class="js-select2"> <option value=""></option> </select> <input type="hidden" id="result" name="result" /> <!-- JavaScript代码 --> <script> $(document).ready(function () { // 初始化select2插件 $('.js-select2').select2({ ajax: { url: '/search', // 远程搜索地址 dataType: 'json', delay: 250, data: function (params) { return { q: params.term // 搜索关键字 }; }, processResults: function (data, params) { return { results: data.items // 远程搜索结果 }; }, cache: true }, minimumInputLength: 1 // 最小输入字符数 }); // 监听select2的change事件,将选项值赋值给隐藏的input框 $('.js-select2').on('change', function () { $('#result').val($(this).val()); }); }); </script> ``` 后端接口代码: ``` // 模拟远程搜索接口 app.get('/search', function (req, res) { var q = req.query.q; var items = [ { id: 1, text: 'Option 1' }, { id: 2, text: 'Option 2' }, { id: 3, text: 'Option 3' }, { id: 4, text: 'Option 4' }, { id: 5, text: 'Option 5' } ]; var results = []; for (var i = 0; i < items.length; i++) { if (items[i].text.indexOf(q) >= 0) { results.push(items[i]); } } res.json({ items: results }); }); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值