当前位置:   article > 正文

基于Vue和uni-app的增强型多选框Checkbox组件开发_uniapp 多项选择器 change事件

uniapp 多项选择器 change事件

基于Vue和uni-app的增强型多选框(Checkbox)组件开发

摘要

随着前端技术的不断发展和用户体验要求的提升,传统的Checkbox组件已不能满足所有需求。本文介绍了一种基于Vue和uni-app的增强型多选框(Checkbox)组件的开发过程。该组件不仅提供了基本的复选功能,还通过数据驱动、支持页面正反向传值等特性,进一步增强了组件的灵活性和可重用性。

图片

一、引言

Checkbox组件在前端开发中扮演着重要角色,它允许用户选择多个选项,是表单交互中不可或缺的元素。然而,传统的Checkbox组件往往功能单一,无法满足复杂多变的前端需求。因此,开发一种增强型的Checkbox组件成为了必要。

二、组件需求分析与设计

  1. 数据驱动:组件应该能够通过数据驱动,即组件的状态和行为应该由数据决定,而不是通过直接操作DOM元素来实现。

  2. 多选功能:组件应该支持多选操作,允许用户选择多个选项。

  3. 页面正反向传值:组件应该能够支持页面正反向传值,即能够将组件的状态传递给父组件,同时也能够接收父组件传递的数据。

  4. 易于扩展和定制:组件应该具有良好的扩展性和可定制性,方便开发者根据具体需求进行二次开发。

   效果图如下:

图片

图片

图片

图片

三、示例代码

 
使用方法
  1. <!-- 多选组件 checkData:多选数据 @change:多选事件 -->
  2. <cc-checkView :checkData="items" @change="checkboxChange"></cc-checkView>

HTML代码实现部分

  1. <template>
  2. <view>
  3. <!-- 多选组件 checkData:多选数据 @change:多选事件 -->
  4. <cc-checkView :checkData="items" @change="checkboxChange"></cc-checkView>
  5. <button class="botBtn" type="primary" @click="submitBtnClick">完成</button>
  6. </view>
  7. </template>
  8. <script>
  9. export default {
  10. data() {
  11. return {
  12. selArr: [],
  13. items: [{
  14. value: '无配置',
  15. name: '无配置',
  16. checked: false
  17. },
  18. {
  19. value: '空调',
  20. name: '空调',
  21. checked: false
  22. },
  23. {
  24. value: '沙发',
  25. name: '沙发',
  26. checked: false
  27. },
  28. {
  29. value: '衣柜',
  30. name: '衣柜',
  31. checked: false
  32. },
  33. {
  34. value: '宽带',
  35. name: '宽带',
  36. checked: false
  37. },
  38. {
  39. value: '电视',
  40. name: '电视',
  41. checked: false
  42. },
  43. {
  44. value: '冰箱',
  45. name: '冰箱',
  46. checked: false
  47. },
  48. {
  49. value: '床',
  50. name: '床',
  51. checked: false
  52. },
  53. {
  54. value: '洗衣机',
  55. name: '洗衣机',
  56. checked: false
  57. }
  58. ]
  59. };
  60. },
  61. onLoad(e) {
  62. // 获取正向传值
  63. if (typeof(e.obj) === 'string') {
  64. let selArr = e.obj.split(',');
  65. // 设置已经勾选的数据
  66. for (let item of this.items) {
  67. if (selArr.includes(item.name)) {
  68. this.$set(item, 'checked', true);
  69. } else {
  70. this.$set(item, 'checked', false);
  71. }
  72. }
  73. }
  74. console.log("正向传值" + e.obj);
  75. },
  76. methods: {
  77. // 多选事件
  78. checkboxChange: function(e) {
  79. this.selArr = e.detail.value;
  80. console.log(this.selArr);
  81. },
  82. submitBtnClick: function(e) {
  83. console.log(this.selArr);
  84. this.$eventHub.$emit('fire', this.selArr);
  85. uni.navigateBack({
  86. animationDuration: 20
  87. });
  88. }
  89. }
  90. };
  91. </script>
  92. <style>
  93. .uni-list-cell {
  94. justify-content: flex-start;
  95. width: 100%;
  96. background-color: #8a6de9;
  97. }
  98. .mycheckBox {
  99. margin-left: 24px;
  100. margin-right: 10px;
  101. margin-top: 50rpx;
  102. }
  103. .botBtn {
  104. margin-top: 36px;
  105. width: 89%;
  106. }
  107. </style>

四、组件应用

在父组件中引入并使用增强型多选框组件,通过v-model指令实现双向数据绑定,并通过监听@change事件处理多选事件。

 

五、总结与展望

本文介绍了基于Vue和uni-app的增强型多选框组件的开发过程。该组件通过数据驱动、支持页面正反向传值等特性,提高了组件的灵活性和可重用性。未来,我们可以继续探索组件的更多可能性和应用场景,如支持条件筛选、异步加载数据等,以满足更复杂的前端需求。同时,也可以考虑将该组件开源,为更多的开发者提供便利。

项目下载地址:

https://ext.dcloud.net.cn/plugin?id=12979

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

闽ICP备14008679号