当前位置:   article > 正文

微信小程序封装vant 下拉框select 单选组件_微信小程序下拉列表组件

微信小程序下拉列表组件

先上效果图:

主要是用vant 小程序组件封装的:vant 小程序ui网址vant-weapp

 主要代码如下:

先封装子组件: select-popup  放在 components 文件夹里面

select-popup.wxml:

  1. <!--pages/select-popup/select-popup.wxml-->
  2. <van-field label="{{label}}" required model:value="{{ value }}" placeholder="{{place}}" border="{{ true }}" readonly
  3. right-icon="{{icon}}" bindtap="tap" />
  4. <van-popup show="{{ popShow }}" position="bottom" custom-style="height: 50%;overflow:hidden">
  5. <van-picker value-key="{{valueKeyName}}" id="picker" show-toolbar title="{{label}}" columns="{{ columns }}" bind:cancel="onCancel" bind:confirm="onConfirm" />
  6. </van-popup>

select-popup.js:

  1. // pages/select-popup/select-popup.js
  2. Component({
  3. /**
  4. * 组件的属性列表
  5. */
  6. properties: {
  7. label: String, // 输入框标签
  8. place: String, // 输入框提示
  9. columns: Array, // 选择器 选项
  10. valueKeyName:{ // 选择器 选项数组中 对象的value的默认key
  11. type: String,
  12. value: 'text'
  13. }
  14. },
  15. /**
  16. * 组件的初始数据
  17. */
  18. data: {
  19. popShow: false,
  20. icon:'arrow-down' // 下拉箭头
  21. },
  22. /**
  23. * 组件的方法列表
  24. */
  25. methods: {
  26. // 点击输入框触发
  27. tap() {
  28. this.setData({
  29. popShow: true,
  30. icon:'arrow-up'
  31. })
  32. },
  33. // 点击取消
  34. onCancel() {
  35. this.setData({
  36. popShow: false,
  37. icon:'arrow-down'
  38. })
  39. },
  40. // 点击确认
  41. onConfirm(e) {
  42. let pic, value
  43. pic = this.selectComponent('#picker')
  44. // 获取当前选中项的值 改值为对象
  45. value = pic.getValues()
  46. this.setData({
  47. value: value[0][this.data.valueKeyName], // 设置输入框为选择器选中的值
  48. })
  49. this.triggerEvent('confirm', { // 传递到组件外事件 , 返回当前选中项 对象
  50. value: value[0]
  51. })
  52. this.onCancel()
  53. }
  54. }
  55. })

select-popup.json

  1. {
  2. "component": true,
  3. "usingComponents": {
  4. "van-field": "@vant/weapp/field/index",
  5. "van-popup": "@vant/weapp/popup/index",
  6. "van-picker": "@vant/weapp/picker/index"
  7. }
  8. }

父组件调用:

  1. <!-- 下拉框选项组件 -->
  2. <select-popup label="选择项目" place="请选择项目" columns="{{list}}" bind:confirm="getSelectProject" valueKeyName="name"></select-popup>

js:

  1. data: {
  2. // 下拉框选项组件
  3. list:[
  4. {code:'1',name:'项目1'},
  5. {code:'2',name:'项目2'},
  6. {code:'3',name:'项目3'},
  7. {code:'4',name:'项目4'}
  8. ]
  9. },
  10. // 获取选中的项目
  11. getSelectProject: function(e) {
  12. // 打印选中项
  13. console.log(e.detail.value);
  14. },
  1. {
  2. "usingComponents": {
  3. "select-popup": "/components/select-popup/select-popup"
  4. }
  5. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/312821
推荐阅读
  

闽ICP备14008679号