Commit a81253ecd4486b68311db31e47ca0aeaceacbe6f
1 parent
f3c6cd68
Update checkbox to support trueValue and falseValue
Showing
2 changed files
with
31 additions
and
8 deletions
Show diff stats
examples/routers/checkbox.vue
1 | <template> | 1 | <template> |
2 | <div> | 2 | <div> |
3 | + <div> | ||
4 | + <Checkbox true-value="true" false-value="false" v-model="testValue1">test string</Checkbox> | ||
5 | + {{ testValue1 }} | ||
6 | + </div> | ||
7 | + <div> | ||
8 | + <Checkbox :true-value="0" :false-value="1" v-model="testValue2">test number</Checkbox> | ||
9 | + {{ testValue2 }} | ||
10 | + </div> | ||
3 | <Checkbox-group v-model="fruit"> | 11 | <Checkbox-group v-model="fruit"> |
4 | - <Checkbox v-for="item in tags" :label="item.label" :key="item"></Checkbox> | 12 | + <Checkbox v-for="item in tags" :label="item.label" :key="item.label" true-value="true"></Checkbox> |
5 | </Checkbox-group> | 13 | </Checkbox-group> |
6 | <div>{{ fruit }}</div> | 14 | <div>{{ fruit }}</div> |
7 | </div> | 15 | </div> |
@@ -12,7 +20,9 @@ | @@ -12,7 +20,9 @@ | ||
12 | return { | 20 | return { |
13 | social: ['facebook', 'github'], | 21 | social: ['facebook', 'github'], |
14 | fruit: ['苹果'], | 22 | fruit: ['苹果'], |
15 | - tags: [] | 23 | + tags: [], |
24 | + testValue1: null, | ||
25 | + testValue2: null | ||
16 | } | 26 | } |
17 | }, | 27 | }, |
18 | mounted () { | 28 | mounted () { |
src/components/checkbox/checkbox.vue
@@ -36,7 +36,15 @@ | @@ -36,7 +36,15 @@ | ||
36 | default: false | 36 | default: false |
37 | }, | 37 | }, |
38 | value: { | 38 | value: { |
39 | - type: Boolean, | 39 | + type: [String, Number, Boolean], |
40 | + default: false | ||
41 | + }, | ||
42 | + trueValue: { | ||
43 | + type: [String, Number, Boolean], | ||
44 | + default: true | ||
45 | + }, | ||
46 | + falseValue: { | ||
47 | + type: [String, Number, Boolean], | ||
40 | default: false | 48 | default: false |
41 | }, | 49 | }, |
42 | label: { | 50 | label: { |
@@ -102,21 +110,26 @@ | @@ -102,21 +110,26 @@ | ||
102 | 110 | ||
103 | const checked = event.target.checked; | 111 | const checked = event.target.checked; |
104 | this.currentValue = checked; | 112 | this.currentValue = checked; |
105 | - this.$emit('input', checked); | 113 | + |
114 | + let value = checked ? this.trueValue : this.falseValue; | ||
115 | + this.$emit('input', value); | ||
106 | 116 | ||
107 | if (this.group) { | 117 | if (this.group) { |
108 | this.parent.change(this.model); | 118 | this.parent.change(this.model); |
109 | } else { | 119 | } else { |
110 | - this.$emit('on-change', checked); | ||
111 | - this.dispatch('FormItem', 'on-form-change', checked); | 120 | + this.$emit('on-change', value); |
121 | + this.dispatch('FormItem', 'on-form-change', value); | ||
112 | } | 122 | } |
113 | }, | 123 | }, |
114 | updateModel () { | 124 | updateModel () { |
115 | - this.currentValue = this.value; | 125 | + this.currentValue = this.value === this.trueValue; |
116 | } | 126 | } |
117 | }, | 127 | }, |
118 | watch: { | 128 | watch: { |
119 | - value () { | 129 | + value (val) { |
130 | + if (val !== this.trueValue && val !== this.falseValue) { | ||
131 | + throw 'Value should be trueValue or falseValue.'; | ||
132 | + } | ||
120 | this.updateModel(); | 133 | this.updateModel(); |
121 | } | 134 | } |
122 | } | 135 | } |