vue、Cascader 级联选择、Cascader 属性事件方法、vue Cascader 所有级联选择样式、vue Cascader 级联选择全部属性事件方法

  • Cascader 级联选择
    • 何时使用
  • 代码演示
    • 基本
    • 选择即改变
    • 自定义已选项
    • 可以自定义显示
    • 默认值
    • 禁用选项
    • 移入展开
    • 动态加载选项
    • 搜索
    • 大小
    • 自定义字段名
    • 后缀图标
  • API
    • showSearch 为对象时,其中的字段:
    • 事件
    • 方法
  • 获得中国省市区县乡镇村数据

Cascader 级联选择

级联选择框。

何时使用

  • 需要从一组相关联的数据集合进行选择,例如省市区,公司层级,事物分类等。
  • 从一个较大的数据集合中进行选择时,用多级分类进行分隔,方便选择。
  • 从一个较大的数据集合中进行选择时,用多级分类进行分隔,方便选择。

代码演示

基本


省市区级联。

<template><a-cascader :options="options" @change="onChange" placeholder="Please select" />
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',},],},],},{value: 'jiangsu',label: 'Jiangsu',children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',},],},],},],};},methods: {onChange(value) {console.log(value);},},};
</script>

选择即改变


这种交互允许只选中父级选项。

<template><a-cascader :options="options" @change="onChange" changeOnSelect />
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',},],},],},{value: 'jiangsu',label: 'Jiangsu',children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',},],},],},],};},methods: {onChange(value) {console.log(value);},},};
</script>

自定义已选项


例如给最后一项加上邮编链接。

<template><a-cascader:options="options":defaultValue="['zhejiang', 'hangzhou', 'xihu']"style="width: 100%"><template slot="displayRender" slot-scope="{labels, selectedOptions}"><span v-for="(label, index) in labels" :key="selectedOptions[index].value"><span v-if="index === labels.length - 1">{{label}} (<a @click="e => handleAreaClick(e, label, selectedOptions[index])">{{selectedOptions[index].code}}</a>)</span><span v-else @click="onChange">{{label}} /</span></span></template></a-cascader>
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',code: 752100,},],},],},{value: 'jiangsu',label: 'Jiangsu',children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',code: 453400,},],},],},],};},methods: {onChange(value) {console.log(value);},handleAreaClick(e, label, option) {e.stopPropagation();console.log('clicked', label, option);},},};
</script>

可以自定义显示


切换按钮和结果分开。

<template><span>{{text}} &nbsp;<a-cascader :options="options" @change="onChange"><a href="#">Change city</a></a-cascader></span>
</template><script>export default {data() {return {text: 'Unselect',options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',},],},],},{value: 'jiangsu',label: 'Jiangsu',children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',},],},],},],};},methods: {onChange(value, selectedOptions) {this.text = selectedOptions.map(o => o.label).join(', ');},},};
</script>

默认值


默认值通过数组的方式指定。

<template><a-cascader:options="options"@change="onChange":defaultValue="['zhejiang', 'hangzhou', 'xihu']"/>
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',},],},],},{value: 'jiangsu',label: 'Jiangsu',children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',},],},],},],};},methods: {onChange(value) {console.log(value);},},};
</script>

禁用选项


通过指定 options 里的 disabled 字段。

<template><a-cascader :options="options" @change="onChange" />
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',},],},],},{value: 'jiangsu',label: 'Jiangsu',disabled: true,children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',},],},],},],};},methods: {onChange(value) {console.log(value);},},};
</script>

移入展开


通过移入展开下级菜单,点击完成选择。

<template><a-cascader:options="options":displayRender="displayRender"expandTrigger="hover"@change="onChange"placeholder="Please select"/>
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',},],},],},{value: 'jiangsu',label: 'Jiangsu',children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',},],},],},],};},methods: {onChange(value) {console.log(value);},displayRender({ labels }) {return labels[labels.length - 1];},},};
</script>

动态加载选项


使用 loadData 实现动态加载选项。

注意:loadDatashowSearch 无法一起使用。

<template><a-cascader:options="options"@change="onChange":loadData="loadData"placeholder="Please select"changeOnSelect/>
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',isLeaf: false,},{value: 'jiangsu',label: 'Jiangsu',isLeaf: false,},],};},methods: {onChange(value) {console.log(value);},loadData(selectedOptions) {const targetOption = selectedOptions[selectedOptions.length - 1];targetOption.loading = true;// load options lazilysetTimeout(() => {targetOption.loading = false;targetOption.children = [{label: `${targetOption.label} Dynamic 1`,value: 'dynamic1',},{label: `${targetOption.label} Dynamic 2`,value: 'dynamic2',},];this.options = [...this.options];}, 1000);},},};
</script>

搜索


可以直接搜索选项并选择。

Cascader[showSearch] 暂不支持服务端搜索,更多信息见 #5547

大小


不同大小的级联选择器。

<template><div><a-cascader size="large" :options="options" @change="onChange" /><br /><br /><a-cascader :options="options" @change="onChange" /><br /><br /><a-cascader size="small" :options="options" @change="onChange" /><br /><br /></div>
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',},],},],},{value: 'jiangsu',label: 'Jiangsu',children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',},],},],},],};},methods: {onChange(value) {console.log(value);},},};
</script>

自定义字段名


自定义字段名。

<template><a-cascader:fieldNames="{ label: 'name', value: 'code', children: 'items' }":options="options"@change="onChange"placeholder="Please select"/>
</template><script>const options = [{code: 'zhejiang',name: 'Zhejiang',items: [{code: 'hangzhou',name: 'Hangzhou',items: [{code: 'xihu',name: 'West Lake',},],},],},{code: 'jiangsu',name: 'Jiangsu',items: [{code: 'nanjing',name: 'Nanjing',items: [{code: 'zhonghuamen',name: 'Zhong Hua Men',},],},],},];export default {data() {return {options,};},methods: {onChange(value) {console.log(value);},},};
</script>

后缀图标


省市区级联。

<template><div><a-cascaderstyle="margin-top: 1rem":options="options"@change="onChange"placeholder="Please select"><a-icon type="smile" slot="suffixIcon" class="test" /></a-cascader><a-cascadersuffixIcon="ab"style="margin-top: 1rem":options="options"@change="onChange"placeholder="Please select"/></div>
</template><script>export default {data() {return {options: [{value: 'zhejiang',label: 'Zhejiang',children: [{value: 'hangzhou',label: 'Hangzhou',children: [{value: 'xihu',label: 'West Lake',},],},],},{value: 'jiangsu',label: 'Jiangsu',children: [{value: 'nanjing',label: 'Nanjing',children: [{value: 'zhonghuamen',label: 'Zhong Hua Men',},],},],},],};},methods: {onChange(value) {console.log(value);},},};
</script>

API

<a-cascader :options=“options” @change=“onChange” />

参数 说明 类型 默认值
allowClear 是否支持清除 boolean true
autoFocus 自动获取焦点 boolean false
changeOnSelect 当此项为 true 时,点选每级菜单选项值都会发生变化,具体见上面的演示 boolean false
defaultValue 默认的选中项 `string[] number[]`
disabled 禁用 boolean false
displayRender 选择后展示的渲染函数,可使用 slot=“displayRender” 和 slot-scope=“{labels, selectedOptions}” ({labels, selectedOptions}) => vNode labels => labels.join(' / ')
expandTrigger 次级菜单的展开方式,可选 ‘click’ 和 ‘hover’ string 'click'
fieldNames 自定义 options 中 label name children 的字段 object { label: 'label', value: 'value', children: 'children' }
getPopupContainer 菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。 Function(triggerNode) () => document.body
loadData 用于动态加载选项,无法与 showSearch 一起使用 (selectedOptions) => void -
notFoundContent 当下拉列表为空时显示的内容 string 'Not Found'
options 可选项数据源 object -
placeholder 输入框占位文本 string '请选择'
popupClassName 自定义浮层类名 string -
popupStyle 自定义浮层样式 object {}
popupPlacement 浮层预设位置 bottomLeft bottomRight topLeft topRight Enum bottomLeft
popupVisible 控制浮层显隐 boolean -
showSearch 在选择框中显示搜索框 boolean false
size 输入框大小,可选 large default small string default
suffixIcon 自定义的选择框后缀图标 `string VNode
value(v-model) 指定选中项 `string[] number[]`

showSearch 为对象时,其中的字段:

参数 说明 类型 默认值
filter 接收 inputValue path 两个参数,当 path 符合筛选条件时,应返回 true,反之则返回 false。 function(inputValue, path): boolean
limit 搜索结果展示数量 boolean 50
matchInputWidth 搜索结果列表是否与输入框同宽 boolean
render 用于渲染 filter 后的选项,可使用 slot=“showSearchRender” 和 slot-scope=“{inputValue, path}” boolean
sort 用于排序 filter 后的选项 boolean

事件

事件名称 说明 回调参数
change 选择完成后的回调 (value, selectedOptions) => void
popupVisibleChange 显示/隐藏浮层的回调 (value) => void

方法

名称 描述
blur() ** 移除焦点**
focus() ** 获取焦点**

获得中国省市区县乡镇村数据

注意,如果需要获得中国省市区数据,可以参考 react 组件的实现 china-division。

vue、Cascader 级联选择、Cascader 属性事件方法、vue Cascader 所有级联选择样式、vue Cascader 级联选择全部属性事件方法相关推荐

  1. Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 4.事件绑定 4.1.事件绑定(点击.双击.鼠标移动) 点击按钮-最简单的事件绑定(无参函数) 格式 点击按钮 ...

  2. 除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。

    实例 <div id="vue_det"> <h1>site : {{site}}</h1> <h1>url : {{url}}&l ...

  3. element 方法返回的boolean被当成字符串了_JavaScript 原生对象、属性、方法、事件、事件参数...

    /*** 事件参考 https://developer.mozilla.org/zh-CN/docs/Web/Events* Event <- UIEvent <- MouseEvent* ...

  4. vue 离开页面事件_【必看】58 道 Vue 常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度...

    △ 是新朋友吗?记得先点web前端学习圈关注我哦- 1.vue优点? 答: 轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十 kb : 简单易学:国人开发,中文文档,不存在语言障碍 , ...

  5. for里面调用方法 vue_Vue源码阅读连载之Vue实例

    我们学习Vue都是从下面这个例子开始的 new Vue({render: h => h(App), }).$mount('#app') 事实上,所有的Vue项目的组成组件都是一个Vue的实例,最 ...

  6. clientsideevents能定义几个click事件_分享8个非常实用的Vue自定义指令

    作者:lzg9527 https://juejin.cn/post/6906028995133833230 在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也 ...

  7. vue组件加载完成之后执行方法_Vue.js实现ready函数加载完之后执行某个函数的方法...

    Vue.js实现ready函数加载完之后执行某个函数的方法 发布于 2020-7-10| 复制链接 摘记: vue.js 教程Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面 ...

  8. Vue2(一):初识Vue、模板语法、数据绑定、el和data的两种写法、MVVM、数据代理、事件

    Vue2学习笔记:第一章 一.初识Vue 1. Vue的特点 2. Vue实例中的el和data 3.总结 二.模板语法 1.插值语法 2.指令语法 三.数据绑定 1.单向数据绑定(v-bind) 2 ...

  9. 产品需求分析与市场分析方法汇总(SWOT+PDCA+波士顿矩阵BCG+5W2H分析法+STAR关键事件分析法+目标管理SMART+时间管理紧急重要矩阵+WBS任务分解法)

    产品需求分析与市场分析方法汇总(SWOT+PDCA+波士顿矩阵BCG+5W2H分析法+STAR关键事件分析法+目标管理SMART+时间管理紧急重要矩阵+WBS任务分解法) 产品需求分析与市场分析方法汇 ...

  10. vue的$nextTick使用总结,this.$refs为undefined的解决办法,element Ui的树形控件setCheckedKeys方法无法使用

    vue的$nextTick使用总结,this.$refs为undefined的解决办法,element Ui的树形控件setCheckedKeys方法无法使用 参考文章: (1)vue的$nextTi ...

最新文章

  1. linux 设置与网络同步的时间
  2. 《JavaScript高级程序设计》节点层次和DOM操作技术
  3. Qt中子线程创建运行时候出现QObject: Cannot create children for a parent that is in a different thread
  4. 爬虫总结(五)-- 其他技巧
  5. Java 程序员必须了解的 7 个性能指标
  6. 改进的SVN的Commit权限控制
  7. Java程序员总结出必看的初级~高级技术面试题
  8. serialize-and-deserialize-bst
  9. Yum包管理工具的20个常用命令
  10. MinIO之Windows环境的搭建
  11. SqlServer中将某字符串按照特定的字符分隔并返回临时表
  12. Ubuntu和Windows双系统调整启动顺序软件
  13. 图像分割-阈值分割法
  14. 平坦瑞利衰落下的QPSK性能仿真
  15. 微信公众号运营必备神器汇总
  16. 基于python的安全即时通讯系统
  17. 跟着Vam一起学习Typescript(第一期)
  18. Centos使用chrony做时间同步
  19. 【区块链论文整理】SIGMOD篇(一)
  20. 网络通信TCP/UDP

热门文章

  1. 实现一个脚本引擎(燕良译)- -
  2. 机器学习基石(台湾大学 林轩田),Lecture 1: The Learning Problem
  3. UI设计网盘资源收集
  4. 初中使用计算机教学反思,初中信息技术教学反思与体会
  5. html+css+javascript制作爱尚音乐播放页面
  6. 前辈不是我,借他人事迹助暖通新人!
  7. android 部分手机Camera 拍照 图片被旋转90度的解决方法
  8. html5的canvas制作口红机闯关游戏(一)
  9. [python]pip freeze和pipreqs的区别和使用方法
  10. 光子晶体制作出LED