index.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <demo-section>
  3. <demo-block :title="$t('basicUsage')">
  4. <van-checkbox v-model="checkbox1">{{ $t('checkbox') }}</van-checkbox>
  5. </demo-block>
  6. <demo-block :title="$t('disabled')">
  7. <van-checkbox
  8. :value="false"
  9. disabled
  10. >
  11. {{ $t('checkbox') }}
  12. </van-checkbox>
  13. <van-checkbox
  14. :value="true"
  15. disabled
  16. >
  17. {{ $t('checkbox') }}
  18. </van-checkbox>
  19. </demo-block>
  20. <demo-block :title="$t('customColor')">
  21. <van-checkbox
  22. v-model="checkbox2"
  23. checked-color="#07c160"
  24. >
  25. {{ $t('customColor') }}
  26. </van-checkbox>
  27. </demo-block>
  28. <demo-block :title="$t('customIcon')">
  29. <van-checkbox v-model="checkbox3">
  30. {{ $t('customIcon') }}
  31. <img
  32. slot="icon"
  33. slot-scope="props"
  34. :src="props.checked ? icon.active : icon.normal"
  35. >
  36. </van-checkbox>
  37. </demo-block>
  38. <demo-block :title="$t('title3')">
  39. <van-checkbox-group v-model="result">
  40. <van-checkbox
  41. v-for="(item, index) in list"
  42. :key="index"
  43. :name="item"
  44. >
  45. {{ $t('checkbox') }} {{ item }}
  46. </van-checkbox>
  47. </van-checkbox-group>
  48. </demo-block>
  49. <demo-block :title="$t('title4')">
  50. <van-checkbox-group
  51. v-model="result2"
  52. :max="2"
  53. >
  54. <van-checkbox
  55. v-for="(item, index) in list"
  56. :key="index"
  57. :name="item"
  58. >
  59. {{ $t('checkbox') }} {{ item }}
  60. </van-checkbox>
  61. </van-checkbox-group>
  62. </demo-block>
  63. <demo-block :title="$t('title5')">
  64. <van-checkbox-group v-model="result3">
  65. <van-cell-group>
  66. <van-cell
  67. v-for="(item, index) in list"
  68. clickable
  69. :key="index"
  70. :title="$t('checkbox') + item"
  71. @click="toggle(index)"
  72. >
  73. <van-checkbox
  74. ref="checkboxes"
  75. :name="item"
  76. />
  77. </van-cell>
  78. </van-cell-group>
  79. </van-checkbox-group>
  80. </demo-block>
  81. </demo-section>
  82. </template>
  83. <script>
  84. export default {
  85. i18n: {
  86. 'zh-CN': {
  87. checkbox: '复选框',
  88. customIcon: '自定义图标',
  89. customColor: '自定义颜色',
  90. title3: '复选框组',
  91. title4: '设置最大可选数',
  92. title5: '搭配单元格组件使用'
  93. },
  94. 'en-US': {
  95. checkbox: 'Checkbox',
  96. customIcon: 'Custom Icon',
  97. customColor: 'Custom Color',
  98. title3: 'Checkbox Group',
  99. title4: 'Maximum amount of checked options',
  100. title5: 'Inside a Cell'
  101. }
  102. },
  103. data() {
  104. return {
  105. checkbox1: true,
  106. checkbox2: true,
  107. checkbox3: true,
  108. list: [
  109. 'a',
  110. 'b',
  111. 'c'
  112. ],
  113. result: ['a', 'b'],
  114. result2: [],
  115. result3: [],
  116. icon: {
  117. normal: 'https://img.yzcdn.cn/public_files/2017/10/13/c547715be149dd3faa817e4a948b40c4.png',
  118. active: 'https://img.yzcdn.cn/public_files/2017/10/13/793c77793db8641c4c325b7f25bf130d.png'
  119. }
  120. };
  121. },
  122. methods: {
  123. toggle(index) {
  124. this.$refs.checkboxes[index].toggle();
  125. }
  126. }
  127. };
  128. </script>
  129. <style lang="less">
  130. .demo-checkbox {
  131. .van-checkbox {
  132. margin: 10px 0 0 20px;
  133. }
  134. .van-cell {
  135. .van-checkbox {
  136. margin: 0;
  137. }
  138. }
  139. img {
  140. height: 20px;
  141. }
  142. }
  143. </style>