W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
解釋:多級(jí)選擇組件,為開(kāi)發(fā)者提供級(jí)聯(lián)選擇功能,默認(rèn)為三級(jí)。比如:省/市/區(qū)。該組件包括左側(cè)標(biāo)簽欄,以及右側(cè)多個(gè) picker(從底部彈起的滾動(dòng)選擇器)。支持配置左側(cè)標(biāo)簽寬度,并提供自定義樣式,可供開(kāi)發(fā)者進(jìn)行定制。
屬性名 | 類型 | 必填 | 默認(rèn)值 | 說(shuō)明 |
---|---|---|---|---|
range |
Array |
是 |
[] |
多級(jí) picker 的內(nèi)容數(shù)組,需要傳入二維數(shù)組,格式為[[],[],[]] |
range-key |
String |
是 |
當(dāng) range 中的一維數(shù)組為[{ range-key : value }]時(shí), range-key 對(duì)應(yīng)的 value 為選擇器顯示的內(nèi)容 |
|
label-width |
String |
否 |
4em |
左側(cè)文字寬度,須包含單位,例如 em 、 px 、 rpx 、 vw 、 vh ... 默認(rèn)為 4 字寬度 4em ( 72px ),6 字寬度為 6em ,建議用 em,可以適配 |
label |
String |
否 |
左側(cè)文字描述 |
|
placeholder |
Array |
否 |
[] |
picker 沒(méi)值時(shí)默認(rèn)顯示 |
value |
Array |
否 |
[] |
picker 選中時(shí)的數(shù)組下標(biāo) |
change-label-color |
Boolean |
否 |
false |
是否需要更改組件左側(cè)標(biāo)簽的顏色 |
label-color |
String |
否 |
#c40311 |
change-lable-color 為 true 時(shí)的顏色值 |
disabled |
Boolean |
否 |
false |
未選擇第一/二級(jí) picker ,而直接選擇其余 picker 時(shí),是否展示禁用 |
tips |
Array |
否 |
[] |
未按順序選擇第一、二、三級(jí) picker 時(shí),分別彈出tips[0]、tips[1]的提示 |
noborder |
Boolean |
否 |
false |
整個(gè)組件外側(cè)是否有下邊框線 |
change |
EventHandle |
否 |
每一級(jí) picker 選擇時(shí),觸發(fā) change 事件 |
|
cascade-picker |
String |
否 |
級(jí)聯(lián)組件的外部樣式類,可用于修改組件最外層樣式 |
|
cascade-label |
String |
否 |
級(jí)聯(lián)組件的外部樣式類,可用于修改組件左側(cè)標(biāo)簽樣式 |
|
cascade-content |
String |
否 |
級(jí)聯(lián)組件的外部樣式類,可用于修改組件右側(cè)單行 picker 的樣式 |
|
cascade-picker-content |
String |
否 |
級(jí)聯(lián)組件的外部樣式類,可用于修改 picker 內(nèi)容展示樣式 |
<!--四字標(biāo)題-->
<smt-cascade
range="{{multiArray1}}"
label="四字標(biāo)題"
range-key="name"
bind:change="change"
placeholder="{{['請(qǐng)選擇省', '請(qǐng)選擇市', '請(qǐng)選擇區(qū)']}}"
></smt-cascade>
<!--配置無(wú)下邊框-->
<smt-cascade
range="{{multiArray2}}"
label="無(wú)下邊框""
range-key="name"
noborder="true"
bind:change="change"
></smt-cascade>
<!--配置label-width-->
<smt-cascade
range="{{multiArray3}}"
label="六字標(biāo)題排版"
range-key="name"
label-width="6em"
bind:change="change"
placeholder="{{['請(qǐng)選擇省', '請(qǐng)選擇市', '請(qǐng)選擇區(qū)']}}"
></smt-cascade>
<!--配置tips-->
<smt-cascade
range="{{multiArray4}}"
label="配置未點(diǎn)擊時(shí)提示"
range-key="name"
bind:change="change"
tips="{{['請(qǐng)選擇省', '請(qǐng)選擇市', '請(qǐng)選擇區(qū)']}}"
></smt-cascade>
<!--配置回填數(shù)據(jù)-->
<smt-cascade
range="{{multiArray5}}"
label="回填"
value="{{[1, 2, 1]}}"
range-key="name"
bind:change="change"
placeholder="{{['請(qǐng)選擇省', '請(qǐng)選擇市', '請(qǐng)選擇區(qū)']}}"
></smt-cascade>
<!--配置禁用-->
<smt-cascade
range="{{multiArray6}}"
label="禁用型"
range-key="name"
disabled
bind:change="change"
placeholder="{{['請(qǐng)選擇省', '請(qǐng)選擇市', '請(qǐng)選擇區(qū)']}}"
></smt-cascade>
<!--外部樣式類-->
<smt-cascade
range="{{multiArray7}}"
label="externalClasses"
cascade-picker="cascade-picker"
cascade-label="cascade-label"
cascade-content="cascade-content"
cascade-picker-content="cascade-picker-content"
range-key="name"
bind:change="change"
placeholder="{{['請(qǐng)選擇省', '請(qǐng)選擇市', '請(qǐng)選擇區(qū)']}}"
></smt-cascade>
// 初始化級(jí)聯(lián)組件數(shù)組內(nèi)容
const initMultiArray = [
[
{
name: '北京市',
value: 1
},
{
name: '山西省',
value: 2
},
{
name: '黑龍江省',
value: 3
}
],
[],
[]
];
// 整個(gè)級(jí)聯(lián)組件數(shù)組內(nèi)容
const multiArray = [
{
name: '北京市',
value: 1,
children: [{
name: '北京市',
value: 1,
children: [{
name: '海淀區(qū)',
value: 1
}, {
name: '大興區(qū)',
value: 2
}, {
name: '朝陽(yáng)區(qū)',
value: 3
}]
}]
},
{
name: '山西省',
value: 2,
children: [{
name: '太原市',
value: 1,
children: [
{
name: '小店區(qū)',
value: 1
}, {
name: '迎澤區(qū)',
value: 2
}, {
name: '杏花嶺區(qū)',
value: 3
}
]
}, {
name: '大同市',
value: 2,
children: [{
name: '南郊區(qū)',
value: 1
}, {
name: '新榮區(qū)',
value: 2
}, {
name: '陽(yáng)高區(qū)',
value: 3
}]
}, {
name: '呂梁市',
value: 3,
children: [{
name: '孝義市',
value: 1
}, {
name: '離石市',
value: 2
}, {
name: '汾陽(yáng)市',
value: 3
}]
}]
},
{
name: '黑龍江省',
value: 3,
children: [{
name: '哈爾濱市',
value: 1,
children: [{
name: '道里區(qū)',
value: 1
}, {
name: '南崗區(qū)',
value: 2
}, {
name: '太平區(qū)',
value: 3
}]
}, {
name: '齊齊哈爾市',
value: 2,
children: [{
name: '龍沙區(qū)',
value: 1
}, {
name: '建華區(qū)',
value: 2
}, {
name: '鐵鋒區(qū)',
value: 3
}]
}, {
name: '大慶市',
value: 3,
children: [{
name: '龍鳳區(qū)',
value: 1
}, {
name: '紅崗區(qū)',
value: 2
}, {
name: '林甸縣',
value: 3
}]
}]
}
];
/* global Page, swan */
Page({ // eslint-disable-line
data: {
// 級(jí)聯(lián)選擇數(shù)組
multiArray1: initMultiArray,
multiArray2: initMultiArray,
multiArray3: initMultiArray,
multiArray4: initMultiArray,
multiArray6: initMultiArray,
multiArray7: initMultiArray,
// 回填數(shù)據(jù)
multiArray5: [
[{
name: '山西省',
value: 1
}],
[{
name: '太原市',
value: 1
}, {
name: '大同市',
value: 2
}, {
name: '呂梁市',
value: 3
}],
[{
name: '小店區(qū)',
value: 1
}, {
name: '迎澤區(qū)',
value: 2
}, {
name: '杏花嶺區(qū)',
value: 3
}]
],
// 占位文案
placeholder: ['請(qǐng)選擇省', '請(qǐng)選擇市', '請(qǐng)選擇區(qū)'],
// 提示文案
tips: ['請(qǐng)選擇省', '請(qǐng)選擇市', '請(qǐng)選擇區(qū)'],
// 是否更改label顏色
changeLabelColor: true,
// 需要更改的顏色,配合changeLabelColor: true使用
labelColor1: '#2772fb',
labelColor2: '#f7534f'
},
/**
* 動(dòng)態(tài)設(shè)置當(dāng)前點(diǎn)擊的是第幾個(gè)級(jí)聯(lián)組件
*
* @param {Object} event 點(diǎn)擊對(duì)象
*/
bindtap(event) {
const index = event.currentTarget.dataset.index;
this.setData({
currentIndex: index
});
},
/**
* value 改變時(shí)觸發(fā) change 事件
*
* @param {Object} event picker選擇對(duì)象
*/
change(event) {
const value = event.detail.value;
const length = value.length;
if (length > 2) {
return;
}
// 記錄是第幾個(gè)cascade
const index = this.data.currentIndex;
const multiArrayKey = `multiArray${[index]}`;
let multiArrayData = this.data[`multiArray${[index]}`];
const subArray = multiArray[value[0]].children;
swan.showLoading({
title: '正在加載...',
mask: true
});
// 500ms之后,隱藏loading提示,同時(shí)更新級(jí)聯(lián)數(shù)據(jù)
setTimeout(() => {
swan.hideLoading();
multiArrayData[length] = length === 1 ? subArray : subArray[value[1]].children;
this.setData(multiArrayKey, multiArrayData);
}, 500);
}
});
/* 外部樣式類 */
.cascade-label,
.cascade-picker-content {
color: #6495ed;
}
{
"usingComponents": {
"smt-cascade": "@smt-ui/component/src/cascade"
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: