智能照明系统APP-本地串口
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
LightingSystemApp-serial/.svn/pristine/61/6182f962e0ca26a2468fdb076da...

84 lines
1.6 KiB

<template>
<uni-checkbox-group v-on="$listeners">
<slot />
</uni-checkbox-group>
</template>
<script>
import {
emitter,
listeners
} from 'uni-mixins'
export default {
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(vm => {
if (vm.checkboxChecked) {
value.push(vm.value)
}
})
this.$trigger('change', $event, {
value: value
})
},
_checkboxGroupUpdateHandler ($event) {
if ($event.type === 'add') {
this.checkboxList.push($event.vm)
} else {
const index = this.checkboxList.indexOf($event.vm)
this.checkboxList.splice(index, 1)
}
},
_getFormData () {
const data = {}
if (this.name !== '') {
const value = []
this.checkboxList.forEach(vm => {
if (vm.checkboxChecked) {
value.push(vm.value)
}
})
data.value = value
data.key = this.name
}
return data
}
}
}
</script>
<style>
uni-checkbox-group[hidden] {
display: none;
}
</style>