码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • antd——a-tree-select 树形选择控件 与 a-cascader 级联选择器 的对比——技能提升


    antd——a-tree-select 树形选择控件 与 a-cascader 级联选择器 的对比

    • 1.级联选择器的使用方法
        • 1.1 需要指定数据源——`options` 数据结构是 对象数组嵌套——`value/label/children`
        • 1.2 默认是选中最后一级才能算选中,可以通过添加`change-on-select`改为任意选中一级
        • 1.3 绑定的是一个数组,无论是否选中任意一级还是最后一级,结果都是数组
        • 1.4 可以添加`:show-search="{ filter }"`来实现检索筛选功能
        • 1.5 如果数据源的字段名非`value/label/children`,可以通过`fieldNames`来指定其他参数
    • 2.树形选择控件的使用方法
        • 2.1 需要指定数据源——`treeData` 数据结构是 对象数组嵌套——`title/value/key/children`
        • 2.2 默认是选中任意一级
        • 2.3 绑定的是一个字符串,如果设置成了`multiple`多选,则绑定的值是一个字符串的数组
        • 2.4 可以添加`:show-search="{ filter }"`来实现检索筛选功能
    • 3. 如果想要多选或者绑定的结果是单个值,而非数组,则优先选择树形选择控件,因为回显会简单。
    • 4. 如果是必须要选中最后一级才可以,则选择级联选择器,回显的时候需要给出一个数组,如果参数没有给出,则需要自行处理,将前面几级的value也一并存放到数组中才可以。

    在遇到 省市区多级联动数据的时候,经常会用到的就是 a-cascader级联选择器。
    在这里插入图片描述

    1.级联选择器的使用方法

    在这里插入图片描述

    1.1 需要指定数据源——options 数据结构是 对象数组嵌套——value/label/children

    数据源结构如下:

    var options = [
      {
        value: 'zhejiang',
        label: '浙江',
        children: [
          {
            value: 'hangzhou',
            label: '杭州',
            children: [
              {
                value: 'xihu',
                label: '西湖',
              },
            ],
          },
        ],
      },
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    1.2 默认是选中最后一级才能算选中,可以通过添加change-on-select改为任意选中一级

    1.3 绑定的是一个数组,无论是否选中任意一级还是最后一级,结果都是数组

    1.4 可以添加:show-search="{ filter }"来实现检索筛选功能

    <a-cascader
        :options="options"
        :show-search="{ filter }"
        placeholder="Please select"
        @change="onChange"
      />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    过滤方法如下:

    filter(inputValue, path) {
      return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);
    },
    
    • 1
    • 2
    • 3

    1.5 如果数据源的字段名非value/label/children,可以通过fieldNames来指定其他参数

    <a-cascader
        :field-names="{ label: 'name', value: 'code', children: 'items' }"
        :options="options"
        placeholder="Please select"
        @change="onChange"
      />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    此时支持的数据源可以是下面的形式了

    var options = [
      {
        code: 'zhejiang',
        name: '浙江',
        items: [
          {
            code: 'hangzhou',
            name: '杭州',
            items: [
              {
                code: 'xihu',
                name: '西湖',
              },
            ],
          },
        ],
      },
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2.树形选择控件的使用方法

    在这里插入图片描述

    2.1 需要指定数据源——treeData 数据结构是 对象数组嵌套——title/value/key/children

    <a-tree-select
        v-model="value"
        style="width: 100%"
        :tree-data="treeData"
        show-search
        :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
        placeholder="Please select"
        allow-clear
        tree-default-expand-all
      />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    数据源结构如下:

    var treeData = [
      {
        title: 'Node1',
        value: '0-0',
        key: '0-0',
        children: [
          {
            title: 'Child Node1',
            value: '0-0-0',
            key: '0-0-0',
          },
        ],
      },
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.2 默认是选中任意一级

    2.3 绑定的是一个字符串,如果设置成了multiple多选,则绑定的值是一个字符串的数组

     <a-tree-select
        show-search
        style="width: 100%"
        :value="value"
        :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
        placeholder="Please select"
        :tree-data="treeData"
        allow-clear
        multiple
        tree-default-expand-all
      />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.4 可以添加:show-search="{ filter }"来实现检索筛选功能

    <a-cascader
        :options="options"
        :show-search="{ filter }"
        placeholder="Please select"
        @change="onChange"
      />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    过滤方法如下:

    filter(inputValue, path) {
      return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);
    },
    
    • 1
    • 2
    • 3

    3. 如果想要多选或者绑定的结果是单个值,而非数组,则优先选择树形选择控件,因为回显会简单。

    4. 如果是必须要选中最后一级才可以,则选择级联选择器,回显的时候需要给出一个数组,如果参数没有给出,则需要自行处理,将前面几级的value也一并存放到数组中才可以。

    完成!!!

    最后附上elementUI中的级联选择器的代码:

    <el-cascader v-model="shelfSelect" clearable size="mini" :show-all-levels="true" style="width:200px;"
                 filterable
                 placeholder="全部货架"
                 v-bind:options="shelfOptions"
                 v-bind:props="{ expandTrigger: 'click',checkStrictly: true }">
        <template slot-scope="{ node, data }">
            <div>
                <i v-if="data.children" class="el-icon-map-location"></i>
                <i v-else class="el-icon-notebook-2"></i>
                <span>{{ data.label }}</span>
            </div>
        </template>
    </el-cascader>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

  • 相关阅读:
    Java每日一练
    从0开始制作微信小程序
    mysql数据库
    重试框架 Spring-Retry 和 Guava-Retry,你知道该怎么选吗?
    GEE:计算和打印GEE程序的执行时间
    「Python实用秘技15」pandas中基于范围条件进行表连接
    你的大型设计文件还在用QQ传输?过期了怎么办?Share Creators快速的大文件传输解决方案
    【滑动窗口】leetcode992. Subarrays with K Different Integers
    pytorch tensor的广播机制
    谁说程序员不懂浪漫,表白代码来啦~
  • 原文地址:https://blog.csdn.net/yehaocheng520/article/details/128031943
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号