diff --git a/examples/routers/radio.vue b/examples/routers/radio.vue index 69fd7b81..1fda34a7 100644 --- a/examples/routers/radio.vue +++ b/examples/routers/radio.vue @@ -50,5 +50,5 @@ methods: { } - } + }; diff --git a/src/components/radio/radio-group.vue b/src/components/radio/radio-group.vue index 4e6715eb..6cd4ffea 100644 --- a/src/components/radio/radio-group.vue +++ b/src/components/radio/radio-group.vue @@ -1,11 +1,5 @@ @@ -15,6 +9,10 @@ const prefixCls = 'ivu-radio-group'; + let seed = 0; + const now = Date.now(); + const getUuid = () => `ivuRadioGroup_${now}_${seed++}`; + export default { name: 'RadioGroup', mixins: [ Emitter ], @@ -36,13 +34,16 @@ vertical: { type: Boolean, default: false + }, + name: { + type: String, + default: getUuid } }, data () { return { currentValue: this.value, - childrens: [], - preventDefaultTab: true + childrens: [] }; }, computed: { @@ -63,12 +64,10 @@ }, methods: { updateValue () { - const value = this.value; this.childrens = findComponentsDownward(this, 'Radio'); - if (this.childrens) { this.childrens.forEach(child => { - child.currentValue = value === child.label; + child.currentValue = this.value === child.label; child.group = true; }); } @@ -79,55 +78,11 @@ this.$emit('input', data.value); this.$emit('on-change', data.value); this.dispatch('FormItem', 'on-form-change', data.value); - }, - findRadio(value) { - return this.childrens && this.childrens.length ? this.childrens.find((child) => child.value === value) : undefined; - }, - findIndexRadio(value) { - return this.childrens && this.childrens.length ? this.childrens.findIndex((child) => child.value === value) : -1; - }, - includesRadio(value) { - return this.childrens && this.childrens.length ? this.childrens.includes((child) => child.value === value) : false; - }, - nextRadio() { - if (this.includesRadio(this.currentValue)) { - console.log('get next'); - } else { - return this.childrens && this.childrens.length ? this.childrens[0] : undefined; - } - }, - onLeft() { - console.log('left', this.currentValue); - }, - onRight() { - console.log('right', this.currentValue); - }, - onUp() { - console.log('up', this.currentValue); - }, - onDown() { - console.log('down', this.currentValue); - }, - onTab(event) { - if (!this.preventDefaultTab) { - return; - } - - event.preventDefault(); - this.preventDefaultTab = false; - this.currentValue = this.nextRadio(); - if (this.currentValue) { - this.change({ - value: this.currentValue.label - }); - } - - console.log('tab', this); - - }, + } }, watch: { value () { + this.currentValue = this.value; this.updateValue(); } } diff --git a/src/components/radio/radio.vue b/src/components/radio/radio.vue index 7be686fb..7d78d1c1 100644 --- a/src/components/radio/radio.vue +++ b/src/components/radio/radio.vue @@ -1,20 +1,18 @@