微信小程序下拉框组件

》》下拉组件

1.组件结构:

2.index.js:

 1 //index.js
 2 Component({
 3   /**
 4    * 组件的属性列表
 5    */
 6   properties: {
 7     propArray: {
 8       type: Array,
 9     }
10   },
11   /**
12    * 组件的初始数据
13    */
14   data: {
15     selectShow: false,//初始option不显示
16     selectText: "请选择",//初始内容
17   },
18   /**
19    * 组件的方法列表
20    */
21   methods: {
22     //option的显示与否
23     selectToggle: function () {
24       var nowShow = this.data.selectShow;//获取当前option显示的状态
25
26       this.setData({
27         selectShow: !nowShow
28       })
29     },
30     //设置内容
31     setText: function (e) {
32       var nowData = this.properties.propArray;//当前option的数据是引入组件的页面传过来的,所以这里获取数据只有通过this.properties
33       var nowIdx = e.target.dataset.index;//当前点击的索引
34       var nowText = nowData[nowIdx].text || nowData[nowIdx].value || nowData[nowIdx];//当前点击的内容
35       //再次执行动画,注意这里一定,一定,一定是this.animation来使用动画
36       this.setData({
37         selectShow: false,
38         selectText: nowText,
39       })
40       this.triggerEvent(‘select‘, nowData[nowIdx])
41     }
42   }
43 })

3.index.json:

1 {
2   "component": true,
3   "usingComponents": {}
4 }

4.index.wxml:

1 <view class=‘ms-content-box‘>
2     <view class=‘ms-content‘ bindtap=‘selectToggle‘>
3         <view class=‘ms-text‘>{{selectText}}</view>
4          <view class="{{selectShow ? ‘icon-up‘ : ‘icon-down‘}}"></view>
5     </view>
6     <view class=‘ms-options‘ wx:if="{{selectShow}}">
7         <view wx:for="{{propArray}}" data-index="{{index}}" wx:key=‘index‘ class=‘ms-option‘ bindtap=‘setText‘>{{item.text || item.value || item}}</view>
8     </view>
9 </view>

5.index.wxss:

 1 /* components/single-dropdown-select/index.wxss */
 2
 3 .ms-content-box {
 4   width: 120px;
 5 }
 6
 7 .ms-content {
 8   border: 1px solid #e2e2e2;
 9   background: white;
10   font-size: 16px;
11   position: relative;
12   height: 30px;
13   line-height: 30px;
14 }
15
16 .ms-text {
17   overflow: hidden;
18   text-overflow: ellipsis;
19   white-space: nowrap;
20   padding: 0 40px 0 6px;
21   font-size: 14px;
22 }
23
24 .ms-options {
25   background: white;
26   width: inherit;
27   position: absolute;
28   border: 1px solid #e2e2e2;
29   border-top: none;
30   box-sizing: border-box;
31   z-index: 3;
32   max-height: 120px;
33   overflow: auto;
34 }
35
36 .ms-option {
37   height: 30px;
38   line-height: 30px;
39   border-top: 1px solid #e2e2e2;
40   padding: 0 6px;
41   text-align: left;
42   overflow: hidden;
43   text-overflow: ellipsis;
44   white-space: nowrap;
45   font-size: 14px;
46 }
47
48 .ms-item:first-child {
49   border-top: none;
50 }
51
52 .icon-right, .icon-down, .icon-up {
53   display: inline-block;
54   padding-right: 13rpx;
55   position: absolute;
56   right: 20rpx;
57   top: 10rpx;
58 }
59
60 .icon-right::after, .icon-down::after, .icon-up::after {
61   content: "";
62   display: inline-block;
63   position: relative;
64   bottom: 2rpx;
65   margin-left: 10rpx;
66   height: 10px;
67   width: 10px;
68   border: solid #bbb;
69   border-width: 2px 2px 0 0;
70 }
71
72 .icon-right::after {
73   -webkit-transform: rotate(45deg);
74   transform: rotate(45deg);
75 }
76
77 .icon-down::after {
78   bottom: 14rpx;
79   -webkit-transform: rotate(135deg);
80   transform: rotate(135deg);
81 }
82
83 .icon-up::after {
84   bottom: 0rpx;
85   -webkit-transform: rotate(-45deg);
86   transform: rotate(-45deg);
87 }

》》使用方式(引用组件的页面):

1.pindex.js:

 1 Page({
 2
 3   /**
 4    * 页面的初始数据
 5    */
 6   data: {
 7     selectArray: [{
 8       "id": "10",
 9       "value": "会计类"
10     }, {
11       "id": "21",
12       "text": "工程类"
13     }, ‘技术类‘, {‘value‘: ‘其他‘}]
14   },
15
16   select: function(e) {
17     console.log(e.detail)
18   }
19
20 })

2.pindex.json:

1 {
2   "navigationBarTitleText":"下拉测试",
3   "usingComponents": {
4     "single-dropdown-select": "/components/single-dropdown-select/index"
5   }
6 }

3.pindex.wxml:

1 <view class="weui-cell">
2     <view class="weui-cell__hd">类型:</view>
3     <view class="weui-cell__bd">
4       <single-dropdown-select prop-array=‘{{selectArray}}‘  bind:select=‘select‘ />
6     </view>
7   </view>

4.效果图:

原文地址:https://www.cnblogs.com/muphy/p/11109734.html

时间: 2024-11-06 03:46:14

微信小程序下拉框组件的相关文章

微信小程序下拉框

微信小程序组件里没有下拉框,正好要用到,记下来以后参考 wxml代码 <view class='top'> <view class='top-text'> 选择接收班级</view> <!-- 下拉框 --> <view class='top-selected' bindtap='bindShowMsg'> <text>{{grade_name}}</text> <image src='/images/icon/do

微信小程序下拉框之二维数组或对象

js文件 Page({ data:{ //户型 这是一个本地的对象,然后绑定到页面上 pic_array: [ { id: 13, name: '1室1厅1卫' }, { id: 14, name: '1室2厅1卫' }, { id: 15, name: '2室1厅1卫' }, { id: 16, name: '3室1厅2卫' }, { id: 17, name: '4室1厅2卫' }, { id: 18, name: '5室1厅3卫' }, { id: 19, name: '6室1厅3卫' }

[微信小程序] 微信小程序下拉滚动选择器picker绑定数据的两种方式

微信小程序下拉滚动选择器picker绑定数据的两种方式  本地数据绑定和wx.request(OBJECT) json数据绑定 1.本地数据绑定 (对象数组) Page({ data:{ //户型 这是一个本地的对象,然后绑定到页面上 pic_array: [ { id: 13, name: '1室1厅1卫' }, { id: 14, name: '1室2厅1卫' }, { id: 15, name: '2室1厅1卫' }, { id: 16, name: '3室1厅2卫' }, { id: 1

关于微信小程序下拉出现三个小点

包子这天看美团外卖的小程序,再瞅瞅自己的背景色,发现,美团下拉的时候有三个小点,但是我自己的校车徐下拉的时候没有三个小点,很是郁闷,于是各种的找各种的找,发现,这三个小点是微信小程序自带的,你只需要设置一下全局的背景色就ok了,设置全局的背景色在app.json里面设置就行,记住,是设置这个属性backgroundColor,不是这个属性:navigationBarBackgroundColor.....谨记谨记......这个定位我在上次说过了,接了百度地图的api.....

微信小程序~下拉刷新PullDownRefresh

一.onPullDownRefresh回调 代码: // http://itlao5.com onPullDownRefresh: function () { console.log('onPullDownRefresh') this.queryData(id) }, 二.enablePullDownRefresh支持 然而=下拉触发不了js回调,需要再json中配置支持下拉刷新,即: "enablePullDownRefresh": true // 请注意是true,不是"

微信小程序下拉刷新和上拉加载

1.上拉加载和下拉刷新 Wxml文件 <scroll-view scroll-top="{{scrollTop}}" scroll-y="true" style="height:{{scrollHeight}}px;" bindscrolltolower="bindDownLoad" bindscroll="scroll">    <block wx:for="{{goodsLi

微信小程序 下拉刷新 上拉加载

1.下拉刷新  小程序页面集成了下拉功能,并提供了接口,我们只需要一些配置就可以拿到事件的回调. 1. 需要在 .json 文件中配置. 如果配置在app.json文件中,那么整个程序都可以下拉刷新.如果写在具体页面的.json文件中,那么就是对应的页面,可以下拉刷新. 具体页面的.json文件: 1 { 2 "enablePullDownRefresh": true 3 } app.json文件: 1 "window": { 2 "enablePullD

微信小程序-下拉松开弹不回去顶部留一段空白

注意的是刷新在json 文件中要配置 "enablePullDownRefresh":true 空白的出现有可能是多次触发下拉事件导致请求过多导致页面反应延迟. 在 onPullDownRefresh 事件里加setTimeout事件延迟下下拉刷新的事件. /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { wx.stopPullDownRefresh(); let _This = this; let oUInf

微信小程序开发——微信小程序下拉刷新真机无法弹回

开发工具中下拉之后页面回弹有一定的延迟,这个时间也有点久.真机测试,下拉后连回弹都没有,这个问题要解决,就得在下拉函数里加上停止下拉刷新的API,如下: /** * 下拉刷新 */ onPullDownRefresh: function(e) { this.getList() wx.stopPullDownRefresh(); } 原文地址:https://www.cnblogs.com/xyyt/p/10855817.html