Cascader 级联选择

级联选择框。

何时使用

  • 需要从一组相关联的数据集合进行选择,例如省市区,公司层级,事物分类等。
  • 从一个较大的数据集合中进行选择时,用多级分类进行分隔,方便选择。
  • 比起 Select 组件,可以在同一个浮层中完成选择,有较好的体验。

代码演示

基本

省市区级联。

  1. <template>
  2. <v-cascader :data="options" @change="onchange"></v-cascader>
  3. </template>
  4. <script>
  5. export default {
  6. data: ()=> ({
  7. options: [{
  8. value: 'sc',
  9. label: '四川',
  10. children: [{
  11. value: 'cd',
  12. label: '成都',
  13. children: [{
  14. value: 'jyq',
  15. label: '九眼桥'
  16. }, {
  17. value: 'cxl',
  18. label: '春熙路'
  19. }],
  20. }, {
  21. value: 'nc',
  22. label: '南充',
  23. children: [{
  24. value: 'nbx',
  25. label: '南部县'
  26. }]
  27. }],
  28. }, {
  29. value: 'cq',
  30. label: '重庆',
  31. children: [{
  32. value: 'lp',
  33. label: '梁平',
  34. children: [{
  35. value: 'sgt',
  36. label: '双桂堂'
  37. }],
  38. }],
  39. }]
  40. }),
  41. methods: {
  42. onchange(val) {
  43. console.log(val)
  44. }
  45. }
  46. };
  47. </script>

大小

不同大小的级联选择器。

  1. <template>
  2. <v-cascader size="large" :data="options"></v-cascader>
  3. <v-cascader :data="options"></v-cascader>
  4. <v-cascader size="small" :data="options"></v-cascader>
  5. </template>
  6. <script>
  7. export default {
  8. data: ()=> ({
  9. options: [{
  10. value: 'sc',
  11. label: '四川',
  12. children: [{
  13. value: 'cd',
  14. label: '成都',
  15. children: [{
  16. value: 'jyq',
  17. label: '九眼桥'
  18. }, {
  19. value: 'cxl',
  20. label: '春熙路'
  21. }],
  22. }, {
  23. value: 'nc',
  24. label: '南充',
  25. children: [{
  26. value: 'nbx',
  27. label: '南部县'
  28. }]
  29. }],
  30. }, {
  31. value: 'cq',
  32. label: '重庆',
  33. children: [{
  34. value: 'lp',
  35. label: '梁平',
  36. children: [{
  37. value: 'sgt',
  38. label: '双桂堂'
  39. }],
  40. }],
  41. }]
  42. })
  43. };
  44. </script>

默认值

默认值通过数组的方式指定。不同大小的级联选择器。

  1. <template>
  2. <v-cascader v-model="value" :data="options"></v-cascader>
  3. </template>
  4. <script>
  5. export default {
  6. data: ()=> ({
  7. value: ['cq','lp','sgt'],
  8. options: [{
  9. value: 'sc',
  10. label: '四川',
  11. children: [{
  12. value: 'cd',
  13. label: '成都',
  14. children: [{
  15. value: 'jyq',
  16. label: '九眼桥'
  17. }, {
  18. value: 'cxl',
  19. label: '春熙路'
  20. }],
  21. }, {
  22. value: 'nc',
  23. label: '南充',
  24. children: [{
  25. value: 'nbx',
  26. label: '南部县'
  27. }]
  28. }],
  29. }, {
  30. value: 'cq',
  31. label: '重庆',
  32. children: [{
  33. value: 'lp',
  34. label: '梁平',
  35. children: [{
  36. value: 'sgt',
  37. label: '双桂堂'
  38. }],
  39. }],
  40. }]
  41. }),
  42. watch: {
  43. value(val){
  44. console.log(val)
  45. }
  46. }
  47. };
  48. </script>

禁用选项

通过指定options里的disabled字段。

  1. <template>
  2. <v-cascader :data="options2"></v-cascader>
  3. </template>
  4. <script>
  5. export default {
  6. data: ()=> ({
  7. options2: [{
  8. value: 'sc',
  9. label: '四川',
  10. disabled: 'true',
  11. children: [{
  12. value: 'cd',
  13. label: '成都',
  14. children: [{
  15. value: 'jyq',
  16. label: '九眼桥'
  17. },{
  18. value: 'cxl',
  19. label: '春熙路'
  20. }],
  21. },{
  22. value: 'nc',
  23. label: '南充',
  24. children: [{
  25. value: 'nbx',
  26. label: '南部县'
  27. }]
  28. }],
  29. }, {
  30. value: 'cq',
  31. label: '重庆',
  32. children: [{
  33. value: 'lp',
  34. label: '梁平',
  35. children: [{
  36. value: 'sgt',
  37. label: '双桂堂'
  38. }],
  39. }],
  40. }]
  41. })
  42. };
  43. </script>

禁用

禁用整个控件

  1. <v-cascader disabled></v-cascader>

API

Cascader Props

属性说明类型默认值
value指定选中项array-
data可选项数据源array-
placeholder输入框占位文本string请选择
size输入框大小,可选 large default smallstringdefault
disabled禁用booleanfalse
allowClear是否支持清除booleantrue
position下拉框的定位方式(absolute,fixed)stringabsolute
popupContainer下拉菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。function() => document.body

Cascader Events

事件说明参数
changevalue改变时触发value