功能 | 是否完成 | 重要性 |
---|---|---|
选项组件 | ⭕ | ❗❗❗ |
选中项组件 | ⭕ | ❗❗❗ |
复选级联组件(选项和选中项联调、引入配置项组件) | ⭕ | ❗❗❗ |
联动Form组件 | ⭕ | ❗❗❗ |
添加npm模式 | ❌ | ❗❗❗ |
适配iview3.0+ | ❌ | ❗❗ |
单选模式 | ❌ | ❗❗ |
单行模式 | ❌ | ❗❗ |
搜索选项(未启用选项异步载入时) | ❌ | ❗❗ |
选项异步载入 | ❌ | ❗❗ |
远程搜索选项(启用选项异步载入时) | ❌ | ❗❗ |
添加只能选择叶子节点的配置 | ❌ | ❗❗ |
添加禁用自动合并到父节点的配置 | ❌ | ❗❗ |
键盘支持 | ❌ | ❗❗ |
添加对外接口 | ❌ | ❗❗ |
- 使用者提供一维数组作为选项内容,每个数组元素都是一个对象表示树节点,对象可拥有
children
属性表示下级目录的内容,依次级联(对象所有属性说明见下方options选项属性)。 - 用户选中一个选项时,组件使用数组对象保存该选项所有的祖先对象,一级祖先在数组的第一个位置,二级祖先在第二个位置,依次放置,选中项则在数组的最后一个位置。
- 所以单选模式下,所有选中项是一维数组;多选模式下,所有选中项是一个二维数组。
- 非 template/render 模式下(例如使用 CDN 引用),需先引入vue库,iview样式,iview组件库。
- 非 template/render 模式下(例如使用 CDN 引用),必须分割组件名/属性,如multi-cascader,only-leaf等。
- 使用
script
标签引入vue.js
,iview.js
。 - 使用
link
标签引入iview.css
。
<template>
<MultiCascader :options="cascadeOption"
v-model="cascaderModel"
filterable
onlyLeaf
multiple
singleLineMode
separator="-"
></MultiCascader>
</template>
<script>
export defalut {
data() {
return {
cascadeOption: [
{
value: 'beijing',
label: '北京',
icon: 'person-stalker',
children: [
{
value: 'gugong',
label: '故宫',
icon: 'person',
},
{
value: 'tiantan',
label: '天坛',
icon: 'person',
},
{
value: 'wangfujing',
label: '王府井',
icon: 'person',
}
]
}, {
value: 'jiangsu',
label: '江苏',
icon: 'person-stalker',
children: [
{
value: 'nanjing',
label: '南京',
icon: 'person-stalker',
children: [
{
value: 'fuzimiao',
label: '夫子庙',
icon: 'person',
}
]
},
{
value: 'suzhou',
label: '苏州',
icon: 'person-stalker',
children: [
{
value: 'zhuozhengyuan',
label: '拙政园',
icon: 'person',
},
{
value: 'shizilin',
label: '狮子林',
icon: 'person',
}
]
}
],
}
],
cascaderModel: [
[
{
value: 'jiangsu',
label: '江苏',
},
{
value: 'nanjing',
label: '南京'
},
{
value: 'fuzimiao',
label: '夫子庙'
}
]
],
}
}
}
</script>
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
options | 下拉选项列表,每个元素的属性参考“options选项属性” | Array | [] |
value | 选中项(需要默认选中时可把value置为该选项的路径数组即可)。单选使用一维数组;多选使用二维数组 | Array | [] |
disable | 是否禁用 | Boolean | false |
clearable | 是否可清空选项 | Boolean | true |
separator | 自定义展示选中项时使用的分割符 | String | ' / ' |
renderFormat | 选择后展示的函数,用于自定义显示格式 | Function | label => label.join(${separator}) |
filterable | 是否可搜索 | Boolean | false |
placeholder | 占位符 | String | '请选择' |
notFoundText | 当搜索列表为空时显示的内容 | String | '无匹配内容' |
multiple | 是否启用多选 | Boolean | false |
singleLineMode | 是否启用单行显示 | Boolean | false |
allSelectable | 是否启用全选(前提:开启multiple ,关闭onlyLeaf ) |
Boolean | false |
onlyLeaf | 是否只能选择叶子节点 | Boolean | false |
disableMerge2parent | 是否禁用自动合并到父节点的功能(前提:开启onlyLeaf ) |
Boolean | false |
autoSelect | 启用当选项是单一路径时,自动选中的功能 | Boolean | false |
transfer | 是否将弹层放置于 body 内,在 Tabs、带有 fixed 的 Table 列内使用时,建议添加此属性,它将不受父级样式影响,从而达到更好的效果 | Boolean | false |
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
value | 选项所对应的值 | String | - |
label | 选项的显示内容,也用于搜索过滤 | String | - |
icon | 图标(使用iview的icon的type值) | String | - |
iconColor | 设定图标的颜色 | String | - |
group | 用于选项分组,同一层级的选项如果拥有相同group则会统一显示 | String | - |
children | 子选项 | Array | - |
函数 | 说明 | 参数 | 返回值 |
---|---|---|---|
findPathByPath(attrName, attrPathList, attrPathString) | 查找一个完整的选项对象路径。需要指定匹配属性名,并传入一个对象数组或一个字符串。 | attrName: 指定属性名;attrPathList:对象数组,对象只有attrName这个属性即可;attrPathString:字符串,使用separator 分割、attrName 对应的值拼接的字符串 |
[] |
findPathByValue(attrName, attrValue) | 查找所有符合条件的选项对象路径。需要指定匹配属性名,及对应的属性值。 | attrName:指定属性名;attrValue:指定属性值。 | [] |
getItemPath(同findPathByPath )旧接口 |