引入
在app.json
或index.json
中引入組件,默認為ES6
版本,
"usingComponents": {
"van-dropdown-menu": "@vant/weapp/dropdown-menu/index",
"van-dropdown-item": "@vant/weapp/dropdown-item/index"
}
代碼演示
基礎(chǔ)用法
<van-dropdown-menu>
<van-dropdown-item value="{{ value1 }}" options="{{ option1 }}" />
<van-dropdown-item value="{{ value2 }}" options="{{ option2 }}" />
</van-dropdown-menu>
Page({
data: {
option1: [
{ text: '全部商品', value: 0 },
{ text: '新款商品', value: 1 },
{ text: '活動商品', value: 2 },
],
option2: [
{ text: '默認排序', value: 'a' },
{ text: '好評排序', value: 'b' },
{ text: '銷量排序', value: 'c' },
],
value1: 0,
value2: 'a',
},
});
自定義菜單內(nèi)容
通過插槽可以自定義DropdownItem的內(nèi)容,此時需要使用實例上的toggle方法手動控制菜單的顯示
<van-dropdown-menu>
<van-dropdown-item value="{{ value1 }}" options="{{ option1 }}" />
<van-dropdown-item id="item" title="{{ itemTitle }}">
<van-cell title="{{ switchTitle1 }}">
<van-switch
slot="right-icon"
size="24px"
style="height: 26px"
checked="{{ switch1 }}"
bind:change="onSwitch1Change"
/>
</van-cell>
<van-cell title="{{ switchTitle2 }}">
<van-switch
slot="right-icon"
size="24px"
style="height: 26px"
checked="{{ switch2 }}"
bind:change="onSwitch2Change"
/>
</van-cell>
<van-button type="info" block bind:click="onConfirm">
確定
</van-button>
</van-dropdown-item>
</van-dropdown-menu>
Page({
data: {
switchTitle1: '包郵',
switchTitle2: '團購',
itemTitle: '篩選',
option1: [
{ text: '全部商品', value: 0 },
{ text: '新款商品', value: 1 },
{ text: '活動商品', value: 2 },
],
value1: 0,
},
onConfirm() {
this.selectComponent('#item').toggle();
},
onSwitch1Change({ detail }) {
this.setData({ switch1: detail });
},
onSwitch2Change({ detail }) {
this.setData({ switch2: detail });
},
});
自定義選中態(tài)顏色
通過active-color屬性可以自定義菜單標題和選項的選中態(tài)顏色
<van-dropdown-menu active-color="#ee0a24">
<van-dropdown-item value="{{ value1 }}" options="{{ option1 }}" />
<van-dropdown-item value="{{ value2 }}" options="{{ option2 }}" />
</van-dropdown-menu>
向上展開
將direction屬性值設(shè)置為up,菜單即可向上展開
<van-dropdown-menu direction="up">
<van-dropdown-item value="{{ value1 }}" options="{{ option1 }}" />
<van-dropdown-item value="{{ value2 }}" options="{{ option2 }}" />
</van-dropdown-menu>
禁用菜單
<van-dropdown-menu>
<van-dropdown-item value="{{ value1 }}" disabled options="{{ option1 }}" />
<van-dropdown-item value="{{ value2 }}" disabled options="{{ option2 }}" />
</van-dropdown-menu>
API
DropdownMenu Props
參數(shù) |
說明 |
類型 |
默認值 |
active-color |
菜單標題和選項的選中態(tài)顏色 |
string
|
#1989fa
|
direction v2.0.1
|
菜單展開方向,可選值為up
|
string
|
down
|
z-index |
菜單欄 z-index 層級 |
number | string
|
10
|
duration |
動畫時長,單位秒 |
number | string
|
0.2
|
overlay |
是否顯示遮罩層 |
boolean
|
true
|
close-on-click-overlay |
是否在點擊遮罩層后關(guān)閉菜單 |
boolean
|
true
|
close-on-click-outside v2.0.7
|
是否在點擊外部元素后關(guān)閉菜單 |
boolean
|
true
|
DropdownItem Props
參數(shù) |
說明 |
類型 |
默認值 |
value |
當前選中項對應(yīng)的 value,可以通過v-model 雙向綁定 |
number | string
|
- |
title |
菜單項標題 |
string
|
當前選中項文字 |
options |
選項數(shù)組 |
Option[]
|
[]
|
disabled |
是否禁用菜單 |
boolean
|
false
|
title-class |
標題額外類名 |
string
|
- |
get-container v2.2.4
|
指定掛載的節(jié)點,用法示例
|
string | () => Element
|
- |
DropdownItem Events
事件名 |
說明 |
回調(diào)參數(shù) |
change |
點擊選項導致 value 變化時觸發(fā) |
value |
open |
打開菜單欄時觸發(fā) |
- |
opened |
打開菜單欄且動畫結(jié)束后觸發(fā) |
- |
close |
關(guān)閉菜單欄時觸發(fā) |
- |
opened |
關(guān)閉菜單欄且動畫結(jié)束后觸發(fā) |
- |
DropdownItem Slots
名稱 |
說明 |
default |
菜單內(nèi)容 |
title |
自定義標題,不支持動態(tài)渲染 |
DropdownItem 方法
通過 ref 可以獲取到 DropdownItem 實例并調(diào)用實例方法,詳見 組件實例方法
方法名 |
說明 |
參數(shù) |
返回值 |
toggle |
切換菜單展示狀態(tài),傳true 為顯示,false 為隱藏,不傳參為取反 |
show?: boolean |
- |
Option 數(shù)據(jù)結(jié)構(gòu)
鍵名 |
說明 |
類型 |
text |
文字 |
string
|
value |
標識符 |
number | string
|
icon |
左側(cè) 圖標名稱 或圖片鏈接 |
string
|
更多建議: