label

用来改进表单组件的可用性,使用for属性找到对应的id,或者将控件放在该标签下,当点击时,就会触发对应的控件。

for优先级高于内部控件,内部有多个控件的时候默认触发第一个控件。

目前可以绑定的控件有:<button/>, <checkbox/>, <radio/>, <switch/>

属性名类型默认值说明
forString绑定控件的 id

示例

  1. <view class="page-section page-section-space">
  2. <view class="page-section-title">表单组件在label内</view>
  3. <checkbox-group class="group" bindchange="checkboxChange">
  4. <view class="label-1" :for="{{checkboxItems}}">
  5. <label>
  6. <checkbox value="{{item.name}}" checked="{{item.checked}}"></checkbox>
  7. <text class="label-1-text">{{item.value}}</text>
  8. </label>
  9. </view>
  10. </checkbox-group>
  11. </view>
  12. <view class="page-section page-section-space">
  13. <view class="page-section-title">label用for标识表单组件</view>
  14. <radio-group class="group" bindchange="radioChange">
  15. <view class="label-2" :for="{{radioItems}}">
  16. <radio id="{{item.name}}" value="{{item.name}}" checked="{{item.checked}}"></radio>
  17. <label class="label-2-text" for="{{item.name}}"><text>{{item.name}}</text></label>
  18. </view>
  19. </radio-group>
  20. </view>
  21. <view class="page-section page-section-space">
  22. <view class="page-section-title">label内有多个时选中第一个</view>
  23. <label class="label-3">
  24. <checkbox class="checkbox-3">选项一</checkbox>
  25. <checkbox class="checkbox-3">选项二</checkbox>
  26. <view class="label-3-text">点击该label下的文字默认选中第一个checkbox</view>
  27. </label>
  28. </view>
  1. Page({
  2. data: {
  3. checkboxItems: [
  4. {name: 'tt', value: '头条'},
  5. {name: 'xigua', value: '西瓜视频', checked: 'true'}
  6. ],
  7. radioItems: [
  8. {name: 'Toutiao', value: '头条'},
  9. {name: 'Xigua', value: '西瓜视频', checked: 'true'}
  10. ],
  11. hidden: false
  12. },
  13. checkboxChange: function (e) {
  14. var checked = e.detail.value
  15. var changed = {}
  16. for (var i = 0; i < this.data.checkboxItems.length; i++) {
  17. if (checked.indexOf(this.data.checkboxItems[i].name) !== -1) {
  18. changed['checkboxItems[' + i + '].checked'] = true
  19. } else {
  20. changed['checkboxItems[' + i + '].checked'] = false
  21. }
  22. }
  23. this.setData(changed)
  24. },
  25. radioChange: function (e) {
  26. var checked = e.detail.value
  27. var changed = {}
  28. for (var i = 0; i < this.data.radioItems.length; i ++) {
  29. if (checked.indexOf(this.data.radioItems[i].name) !== -1) {
  30. changed['radioItems[' + i + '].checked'] = true
  31. } else {
  32. changed['radioItems[' + i + '].checked'] = false
  33. }
  34. }
  35. this.setData(changed)
  36. },
  37. tapEvent: function (e) {
  38. console.log('按钮被点击')
  39. }
  40. })

label - 图1

原文: https://developer.toutiao.com/docs/comp/label.html