当前位置:   article > 正文

el-select:从字典获取下拉框内容后,自定义下拉框展示内容,并且可以根据value值进行模糊查询_el-select模糊查询

el-select模糊查询

1.从字典获取下拉框内容展示时不符合自己的要求,可以通过在el-option中加入<div slot>{{dict.label}}</div>。可以将dictOption换成字典,因为后面需要进行模糊查询,这里我就自定义了。

  1. <el-option v-for="dict in dictOption"
  2. :key="dict.value"
  3. :label="dict.label.split('-')[1]"
  4. :value="dict.value">
  5. <div slot>{{ dict.label }}</div>
  6. </el-option>

2.el-select模糊查询是根据label进行模糊查询,当我们想通过value进行模糊查询,需要加上filterable可筛选数据,然后设置:filter-method自定义筛选方法。还要在筛选方法中加上防抖,目的可参考:JS中的防抖_js防抖_秃头老菜鸟的博客-CSDN博客

vue中内容

  1. <template>
  2. <el-select filterable :filter-method='(value) => dataFilter(value, "字典类型","dictOption")' @focus='dictChange("字典类型","dictOption")' v-model="form.modelValue">
  3. <el-option v-for="dict in dictOption"
  4. :key="dict.value"
  5. :label="dict.label.split('-')[1]"
  6. :value="dict.value">
  7. <div slot>{{ dict.label }}</div>
  8. </el-option>
  9. </el-select>
  10. </template>
  11. <script>
  12. import {debounce} from "@/api/common"; //引用js中的防抖方法
  13. export default {
  14. dicts: ['字典类型'],
  15. data() {
  16. return {
  17. dictOption:[],
  18. }
  19. },
  20. created() {
  21. this.dictOption = this.dict.type.字典类型
  22. },
  23. methods: {
  24. //模糊查询
  25. dataFilter: debounce(function (val,dictsName,dictsList) {
  26. let data = JSON.parse(JSON.stringify(this.dict.type[dictsName]))
  27. if(val && val.trim()){
  28. var sum = 0; //数据太多,做查询条数限制
  29. var arry=[]
  30. data.filter(function(v){
  31. if(sum >= 20){
  32. return;
  33. } //数据太多,做查询条数限制
  34. if (v.value.indexOf(val) !== -1 || v.label.indexOf(val) !== -1){
  35. sum += 1; //数据太多,做查询条数限制
  36. arry.push(JSON.parse(JSON.stringify(v)))
  37. }
  38. });
  39. this[dictsList] = arry
  40. }else{
  41. this[dictsList] = data
  42. }
  43. }, 500),
  44. //模糊查询
  45. dictChange(dictsName,dictsList){
  46. if (this[dictsList].length === 0){
  47. this[dictsList] = this.dict.type[dictsName]
  48. }
  49. },
  50. }
  51. }
  52. </script>

 js中内容

  1. import request from '@/utils/request'
  2. //防抖
  3. export const debounce = function (fn, t) {
  4. let delay = t || 200;
  5. let timer = null;
  6. return function () {
  7. if (timer) {
  8. clearTimeout(timer);
  9. }
  10. timer = setTimeout(() => {
  11. fn.apply(this, arguments);
  12. }, delay);
  13. }
  14. }

本篇根据value模糊查询参考:https://blog.csdn.net/keke11211/article/details/124585150 

加入防抖参考: https://blog.csdn.net/ZHENGCHUNJUN/article/details/127260620

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/104811
推荐阅读