• Cascader 级联选择器如何根据给定的叶节点值设置默认值(数据回显)


    转载自:Cascader 级联选择器如何设置默认值(数据回显)_༺举个栗子吧༻的博客-CSDN博客_选择器设置默认值

    官网cascader:https://element.eleme.cn/#/zh-CN/component/cascader 

    根据官网获取选中值可以看到数据结构是[['01','0101','010101']] ,为树的完整路径,所以赋值的时候必须根据填充值的完整路径,下面的defaultData为根据数据库存放的值为 ’010101‘,’010102‘来查找值在树中的整个路径,并给el-cascader设置默认值。

    直接上代码:

    1. <template>
    2.     <div class="block">
    3.       <el-cascader
    4.         v-model="result"
    5.         placeholder="试试搜索:指南"
    6.         :options="options"
    7.         :props="{ multiple: true }"
    8.         filterable></el-cascader>
    9.     </div>
    10. </template>
    11. <script>
    12.      export default {
    13.         created(){
    14.             //设定初始值
    15.             let result=['kekong','yizhi']
    16.             let resArr=this.defaultData(result)
    17.             this.result=resArr
    18.         },
    19.         methods:{
    20.             
    21.             defaultData(result){
    22.                 var data=[...this.options]
    23.                 var addArray=[]
    24.                 for(var i=0;i<data.length;i++){
    25.                     if(result.length===0){
    26.                         return addArray;
    27.                     }
    28.                     let itemAdd=[]
    29.                     if(result.indexOf(data[i].value)<0){
    30.                         itemAdd.push(data[i].value)
    31.                         if(data[i].children){
    32.                             cartwheel(itemAdd,data[i].children)
    33.                         }else{
    34.                             itemAdd=[]
    35.                             continue
    36.                         }
    37.                     }else{
    38.                         addArray.push(...data[i].value)
    39.                         result.splice(result.indexOf(data[i].value),1)
    40.                     }
    41.                 }
    42.                 
    43.                 function cartwheel(itemAdd,data){
    44.                     for(var i=0;i<data.length;i++){
    45.                         if(itemAdd.indexOf(data[i].value)>-1 || result.length===0){
    46.                             return
    47.                         }
    48.                         itemAdd.push(data[i].value)
    49.                         if(result.indexOf(data[i].value)<0){
    50.                             if(data[i].children){
    51.                                 cartwheel(itemAdd,data[i].children)
    52.                             }else{
    53.                                 itemAdd.splice(itemAdd.length-1,1)
    54.                                 continue
    55.                             }
    56.                         
    57.                         }else{
    58.                             var copy=JSON.stringify(itemAdd)
    59.                             addArray.push(JSON.parse(copy))
    60.                             itemAdd.splice(itemAdd.length-1,1)
    61.                             result.splice(result.indexOf(data[i].value),1)
    62.                             continue
    63.                         }
    64.                     }
    65.                     itemAdd.splice(itemAdd.length-1,1)
    66.                 }
    67.             
    68.                 return addArray
    69.             },
    70.         },
    71.         data() {
    72.           return {
    73.             result:[['zhinan','shejiyuanze','yizhi']],
    74.             options: [{
    75.               value: 'zhinan',
    76.               label: '指南',
    77.               children: [{
    78.                 value: 'shejiyuanze',
    79.                 label: '设计原则',
    80.                 children: [{
    81.                   value: 'yizhi',
    82.                   label: '一致'
    83.                 }, {
    84.                   value: 'fankui',
    85.                   label: '反馈'
    86.                 }, {
    87.                   value: 'xiaolv',
    88.                   label: '效率'
    89.                 }, {
    90.                   value: 'kekong',
    91.                   label: '可控'
    92.                 }]
    93.               }, {
    94.                 value: 'daohang',
    95.                 label: '导航',
    96.                 children: [{
    97.                   value: 'cexiangdaohang',
    98.                   label: '侧向导航'
    99.                 }, {
    100.                   value: 'dingbudaohang',
    101.                   label: '顶部导航'
    102.                 }]
    103.               }]
    104.             }, {
    105.               value: 'zujian',
    106.               label: '组件',
    107.               children: [{
    108.                 value: 'basic',
    109.                 label: 'Basic',
    110.                 children: [{
    111.                   value: 'layout',
    112.                   label: 'Layout 布局'
    113.                 }, {
    114.                   value: 'color',
    115.                   label: 'Color 色彩'
    116.                 }, {
    117.                   value: 'typography',
    118.                   label: 'Typography 字体'
    119.                 }, {
    120.                   value: 'icon',
    121.                   label: 'Icon 图标'
    122.                 }, {
    123.                   value: 'button',
    124.                   label: 'Button 按钮'
    125.                 }]
    126.               }, {
    127.                 value: 'form',
    128.                 label: 'Form',
    129.                 children: [{
    130.                   value: 'radio',
    131.                   label: 'Radio 单选框'
    132.                 }, {
    133.                   value: 'checkbox',
    134.                   label: 'Checkbox 多选框'
    135.                 }, {
    136.                   value: 'input',
    137.                   label: 'Input 输入框'
    138.                 }, {
    139.                   value: 'input-number',
    140.                   label: 'InputNumber 计数器'
    141.                 }, {
    142.                   value: 'select',
    143.                   label: 'Select 选择器'
    144.                 }, {
    145.                   value: 'cascader',
    146.                   label: 'Cascader 级联选择器'
    147.                 }, {
    148.                   value: 'switch',
    149.                   label: 'Switch 开关'
    150.                 }, {
    151.                   value: 'slider',
    152.                   label: 'Slider 滑块'
    153.                 }, {
    154.                   value: 'time-picker',
    155.                   label: 'TimePicker 时间选择器'
    156.                 }, {
    157.                   value: 'date-picker',
    158.                   label: 'DatePicker 日期选择器'
    159.                 }, {
    160.                   value: 'datetime-picker',
    161.                   label: 'DateTimePicker 日期时间选择器'
    162.                 }, {
    163.                   value: 'upload',
    164.                   label: 'Upload 上传'
    165.                 }, {
    166.                   value: 'rate',
    167.                   label: 'Rate 评分'
    168.                 }, {
    169.                   value: 'form',
    170.                   label: 'Form 表单'
    171.                 }]
    172.               }, {
    173.                 value: 'data',
    174.                 label: 'Data',
    175.                 children: [{
    176.                   value: 'table',
    177.                   label: 'Table 表格'
    178.                 }, {
    179.                   value: 'tag',
    180.                   label: 'Tag 标签'
    181.                 }, {
    182.                   value: 'progress',
    183.                   label: 'Progress 进度条'
    184.                 }, {
    185.                   value: 'tree',
    186.                   label: 'Tree 树形控件'
    187.                 }, {
    188.                   value: 'pagination',
    189.                   label: 'Pagination 分页'
    190.                 }, {
    191.                   value: 'badge',
    192.                   label: 'Badge 标记'
    193.                 }]
    194.               }, {
    195.                 value: 'notice',
    196.                 label: 'Notice',
    197.                 children: [{
    198.                   value: 'alert',
    199.                   label: 'Alert 警告'
    200.                 }, {
    201.                   value: 'loading',
    202.                   label: 'Loading 加载'
    203.                 }, {
    204.                   value: 'message',
    205.                   label: 'Message 消息提示'
    206.                 }, {
    207.                   value: 'message-box',
    208.                   label: 'MessageBox 弹框'
    209.                 }, {
    210.                   value: 'notification',
    211.                   label: 'Notification 通知'
    212.                 }]
    213.               }, {
    214.                 value: 'navigation',
    215.                 label: 'Navigation',
    216.                 children: [{
    217.                   value: 'menu',
    218.                   label: 'NavMenu 导航菜单'
    219.                 }, {
    220.                   value: 'tabs',
    221.                   label: 'Tabs 标签页'
    222.                 }, {
    223.                   value: 'breadcrumb',
    224.                   label: 'Breadcrumb 面包屑'
    225.                 }, {
    226.                   value: 'dropdown',
    227.                   label: 'Dropdown 下拉菜单'
    228.                 }, {
    229.                   value: 'steps',
    230.                   label: 'Steps 步骤条'
    231.                 }]
    232.               }, {
    233.                 value: 'others',
    234.                 label: 'Others',
    235.                 children: [{
    236.                   value: 'dialog',
    237.                   label: 'Dialog 对话框'
    238.                 }, {
    239.                   value: 'tooltip',
    240.                   label: 'Tooltip 文字提示'
    241.                 }, {
    242.                   value: 'popover',
    243.                   label: 'Popover 弹出框'
    244.                 }, {
    245.                   value: 'card',
    246.                   label: 'Card 卡片'
    247.                 }, {
    248.                   value: 'carousel',
    249.                   label: 'Carousel 走马灯'
    250.                 }, {
    251.                   value: 'collapse',
    252.                   label: 'Collapse 折叠面板'
    253.                 }]
    254.               }]
    255.             }, {
    256.               value: 'ziyuan',
    257.               label: '资源',
    258.               children: [{
    259.                 value: 'axure',
    260.                 label: 'Axure Components'
    261.               }, {
    262.                 value: 'sketch',
    263.                 label: 'Sketch Templates'
    264.               }, {
    265.                 value: 'jiaohu',
    266.                 label: '组件交互文档'
    267.               }]
    268.             }]
    269.           };
    270.         }
    271.       };
    272. </script>
    273. <style>
    274. </style>


     

  • 相关阅读:
    Nginx:过滤模块的实现
    玩转Apifox之接口测试
    LeetCode每日一题(2181. Merge Nodes in Between Zeros)
    基苯乙烯微球支载L-脯氨酸磺酰胺/水滑石@磺化聚苯乙烯微球/石蜡聚苯乙烯微球的制备
    YOLOv5如何训练自己的数据集(生活垃圾数据集为例)
    LeetCode算法题解(回溯、难点)|LeetCode332. 重新安排行程
    k-NN分类算法详解与分析(k近邻分类算法)
    `英语` 2022/8/25
    SkyWalking 实现跨线程 Trace 传递
    手写笔记教会你集成Spring和Mybatis框架(有详细注解)
  • 原文地址:https://blog.csdn.net/tarataotao/article/details/126467702