在項目開發(fā)中,會要求在小程序有時使用下拉框選項。在通常思路就是用 picker 組件實(shí)現(xiàn)。pick 組件使用 mode 來區(qū)分類別,默認(rèn)使用普通選擇器就行。
還有另一個方法就是可以通過自定義組件實(shí)現(xiàn),代碼如下:
//index.js Component({ /** * 組件的屬性列表 */ properties: { propArray: { type: Array, } }, /** * 組件的初始數(shù)據(jù) */ data: { selectShow: false,//初始o(jì)ption不顯示 selectText: "請選擇",//初始內(nèi)容 }, /** * 組件的方法列表 */ methods: { //option的顯示與否 selectToggle: function () { var nowShow = this.data.selectShow;//獲取當(dāng)前option顯示的狀態(tài) this.setData({ selectShow: !nowShow }) }, //設(shè)置內(nèi)容 setText: function (e) { var nowData = this.properties.propArray;//當(dāng)前option的數(shù)據(jù)是引入組件的頁面?zhèn)鬟^來的,所以這里獲取數(shù)據(jù)只有通過this.properties var nowIdx = e.target.dataset.index;//當(dāng)前點(diǎn)擊的索引 var nowText = nowData[nowIdx].text || nowData[nowIdx].value || nowData[nowIdx];//當(dāng)前點(diǎn)擊的內(nèi)容 //再次執(zhí)行動畫,注意這里一定,一定,一定是this.animation來使用動畫 this.setData({ selectShow: false, selectText: nowText, }) this.triggerEvent('select', nowData[nowIdx]) } } })
代碼如下:
<view class='ms-content-box'> <view class='ms-content' bindtap='selectToggle'> <view class='ms-text'>{{selectText}}</view> <view class="{{selectShow ? 'icon-up' : 'icon-down'}}"></view> </view> <view class='ms-options' wx:if="{{selectShow}}"> <view wx:for="{{propArray}}" data-index="{{index}}" wx:key='index' class='ms-option' bindtap='setText'>{{item.text || item.value || item}}</view> </view> </view>
樣式實(shí)現(xiàn):
/* components/single-dropdown-select/index.wxss */ .ms-content-box { width: 120px; } .ms-content { border: 1px solid #e2e2e2; background: white; font-size: 16px; position: relative; height: 30px; line-height: 30px; } .ms-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 0 40px 0 6px; font-size: 14px; } .ms-options { background: white; width: inherit; position: absolute; border: 1px solid #e2e2e2; border-top: none; box-sizing: border-box; z-index: 3; max-height: 120px; overflow: auto; } .ms-option { height: 30px; line-height: 30px; border-top: 1px solid #e2e2e2; padding: 0 6px; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; } .ms-item:first-child { border-top: none; } .icon-right, .icon-down, .icon-up { display: inline-block; padding-right: 13rpx; position: absolute; right: 20rpx; top: 10rpx; } .icon-right::after, .icon-down::after, .icon-up::after { content: ""; display: inline-block; position: relative; bottom: 2rpx; margin-left: 10rpx; height: 10px; width: 10px; border: solid #bbb; border-width: 2px 2px 0 0; } .icon-right::after { -webkit-transform: rotate(45deg); transform: rotate(45deg); } .icon-down::after { bottom: 14rpx; -webkit-transform: rotate(135deg); transform: rotate(135deg); } .icon-up::after { bottom: 0rpx; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); }
如何使用呢?首先在引用組件的頁面,引入組件:
{ "usingComponents": { "single-dropdown-select": "/components/single-dropdown-select/index" } }
在頁面中,直接使用 引入的組件,代碼如下:
<view> <single-dropdown-select prop-array='{{selectArray}}' bind:select='select' /> </view>
同時傳入數(shù)據(jù)和監(jiān)聽子組件向父組件傳遞的 select 方法。
Page({ data: { selectArray: [{ "id": "10", "value": "會計類" }, { "id": "21", "text": "工程類" }, '技術(shù)類', {'value': '其他'}] }, select: function(e) { console.log(e.detail) } })
本文內(nèi)容已全部講述完畢,歡迎大家關(guān)注更多后續(xù)精彩內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/128264.html
摘要:資源開發(fā)文檔是一套完全免費(fèi)的微信小程序開發(fā)框架,擴(kuò)展了小程序的能力。推薦有一些不錯的解決方案封裝封裝跨頁面事件通訊監(jiān)聽數(shù)據(jù)變化開發(fā)如何在微信小程序的頁面間傳遞數(shù)據(jù)需要時可以快速過一遍。微信小程序回調(diào),,,的使用例子供參考 這篇文章主要記錄我做小程序「輕算賬」過程中遇到的一些問題和解決方案,就當(dāng)是做個總結(jié),也希望其中有能夠幫助到他人的信息。 showImg(https://segment...
摘要:網(wǎng)友們的方法網(wǎng)友們有人使用的方式是給綁定一個空方法。這也是一個解決方法。友情提醒關(guān)于不能滾動的這個效果需要在真機(jī)上面查看,在編輯器上面看不到效果。本文首發(fā)于公眾號前端的極致實(shí)現(xiàn)。歡迎小可愛們來交流加我微信拉大家進(jìn)群 我們需要解決的問題:當(dāng)彈框顯示的時候,彈框下面的內(nèi)容不能滾動 小程序的彈框特別多,像下面這樣,彈框的底部是一個可以下拉的頁面,但是當(dāng)彈框出現(xiàn)的時候,需要禁止底部的滾動,那么...
摘要:入口文件繼承自組件基類,它同樣擁有組件生命周期,但因?yàn)槿肟谖募奶厥庑裕纳芷诓⒉煌暾纭VС纸M件化開發(fā),組件代碼可以放在任意位置,不過建議放在下的目錄中。 生命周期 componentWillMount 在微信小程序中這一生命周期方法對應(yīng)頁面的onLoad或入口文件app中的onLaunch componentDidMount 在微信小程序中這一生命周期方法對應(yīng)頁面的onRe...
閱讀 547·2023-03-27 18:33
閱讀 732·2023-03-26 17:27
閱讀 630·2023-03-26 17:14
閱讀 591·2023-03-17 21:13
閱讀 521·2023-03-17 08:28
閱讀 1801·2023-02-27 22:32
閱讀 1292·2023-02-27 22:27
閱讀 2178·2023-01-20 08:28