'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import {
  emitter,
  listeners
} from '../mixins'
 
function getCheckboxGroup (weex) {
  return {
    name: 'CheckboxGroup',
    mixins: [emitter, listeners],
    props: {
      name: {
        type: String,
        default: ''
      }
    },
    data () {
      return {
        checkboxList: []
      }
    },
 
    listeners: {
      '@checkbox-change': '_changeHandler',
      '@checkbox-group-update': '_checkboxGroupUpdateHandler'
    },
    created () {
      this.$dispatch('Form', 'uni-form-group-update', {
        type: 'add',
        vm: this
      })
    },
    beforeDestroy () {
      this.$dispatch('Form', 'uni-form-group-update', {
        type: 'remove',
        vm: this
      })
    },
 
    methods: {
      _changeHandler ($event) {
        const value = []
        this.checkboxList.forEach(function (vm) {
          if (vm.checkboxChecked) {
            value.push(vm.value)
          }
        })
        this.$trigger('change', {
          value: value
        })
      },
      _checkboxGroupUpdateHandler ($event) {
        if ($event.type === 'add') {
          this.checkboxList.push($event.vm)
          //global .nativeLog(JSON.stringify(this.checkboxList))
          //global .nativeLog('checkboxList 更新')
        }
        else {
          const index = this.checkboxList.indexOf($event.vm)
          this.checkboxList.splice(index, 1)
        }
      },
      _getFormData () {
        const data = {}
        if (this.name !== '') {
          const value = []
          this.checkboxList.forEach(function (vm) {
            if (vm.checkboxChecked) {
              value.push(vm.value)
            }
          })
          data['value'] = value
          data['key'] = this.name
        }
        return data
      }
    },
    render (createElement) {
      const _vm = this
      return createElement('div', _vm._g({
        staticClass: ['uni-checkbox-group']
      }, _vm.$listeners), [_vm._t('default')], 2)
    },
    style: {}
  }
}
 
export default function init (Vue, weex) {
  Vue.component('checkbox-group', getCheckboxGroup(weex))
}