Commit 578ca325379ffb9e7cda4fe5f3ca7486d0aa6d5f

Authored by 梁灏
1 parent 184dba1c

fixed Radio bug

fixed Radio bug
assets/iview.png

165 KB | W: | H:

163 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
src/components/form/form-item.vue
... ... @@ -219,9 +219,8 @@
219 219 return false;
220 220 }
221 221 });
222   - // todo
223   -// this.$on('el.form.blur', this.onFieldBlur);
224   -// this.$on('el.form.change', this.onFieldChange);
  222 + this.$on('on-form-blur', this.onFieldBlur);
  223 + this.$on('on-form-change', this.onFieldChange);
225 224 }
226 225 }
227 226 },
... ...
src/components/input/input.vue
... ... @@ -140,9 +140,11 @@
140 140 },
141 141 handleBlur () {
142 142 this.$emit('on-blur');
  143 + this.$dispatch('on-form-blur', this.value);
143 144 },
144 145 handleChange (event) {
145 146 this.$emit('on-change', event);
  147 + this.$dispatch('on-form-change', this.value);
146 148 },
147 149 resizeTextarea () {
148 150 const autosize = this.autosize;
... ...
src/components/radio/radio-group.vue
... ... @@ -9,6 +9,7 @@
9 9 const prefixCls = 'ivu-radio-group';
10 10  
11 11 export default {
  12 + name: 'radioGroup',
12 13 props: {
13 14 model: {
14 15 type: [String, Number],
... ... @@ -51,6 +52,7 @@
51 52 this.model = data.value;
52 53 this.updateModel();
53 54 this.$emit('on-change', data.value);
  55 + this.$dispatch('on-form-change', data.value);
54 56 }
55 57 },
56 58 watch: {
... ...
src/components/radio/radio.vue
... ... @@ -62,6 +62,7 @@
62 62 }
63 63 },
64 64 ready () {
  65 + if (this.$parent && this.$parent.$options.name === 'radioGroup') this.group = true;
65 66 if (!this.group) {
66 67 this.updateModel();
67 68 }
... ... @@ -81,6 +82,8 @@
81 82 checked: this.checked
82 83 });
83 84 }
  85 +
  86 + if (!this.group) this.$dispatch('on-form-change', this.selected);
84 87 },
85 88 updateModel () {
86 89 this.selected = this.checked;
... ...
test/routers/form.vue
1 1 <template>
2 2 <div style="width: 400px">
3   - <i-form v-ref:form :model="form" :rules="rules" :label-width="50" label-position="right">
  3 + <i-form v-ref:form :model="form" :rules="rules" :label-width="100" label-position="right">
4 4 <form-item label="邮箱" prop="mail">
5 5 <i-input :value.sync="form.mail" placeholder="请输入邮箱">
6 6 <Icon type="ios-email-outline" slot="prepend"></Icon>
... ... @@ -11,6 +11,25 @@
11 11 <Icon type="ios-locked-outline" slot="prepend"></Icon>
12 12 </i-input>
13 13 </form-item>
  14 + <form-item label="radio" prop="single">
  15 + <radio :checked.sync="form.single">Single</radio>
  16 + </form-item>
  17 + <form-item label="radioGroup" prop="group">
  18 + <Radio-group :model.sync="form.group">
  19 + <Radio value="apple">
  20 + <Icon type="social-apple"></Icon>
  21 + <span>Apple</span>
  22 + </Radio>
  23 + <Radio value="android">
  24 + <Icon type="social-android"></Icon>
  25 + <span>Android</span>
  26 + </Radio>
  27 + <Radio value="windows">
  28 + <Icon type="social-windows"></Icon>
  29 + <span>Windows</span>
  30 + </Radio>
  31 + </Radio-group>
  32 + </form-item>
14 33 <form-item>
15 34 <i-button type="primary" @click="onSubmit('form')">提交</i-button>
16 35 </form-item>
... ... @@ -24,21 +43,31 @@
24 43 return {
25 44 form: {
26 45 mail: '',
27   - passwd: ''
  46 + passwd: '',
  47 + single: false,
  48 + group: ''
28 49 },
29 50 rules: {
30 51 mail: [
31 52 {
32   - required: true, message: '请输入邮箱', trigger: 'blur'
  53 + required: true, message: '请输入正确的邮箱', trigger: 'blur', type: 'email'
  54 + },
  55 + {
  56 + min: 3, max: 50, message: '长度在 3 到 50 个字符', trigger: 'blur'
33 57 },
34 58 {
35   - min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur'
  59 + min: 3, max: 50, message: '长度在 3 到 5 个字符', trigger: 'change'
36 60 }
37 61 ],
38 62 passwd: [
39 63 {
40 64 required: true, message: '请输入密码', trigger: 'blur'
41 65 }
  66 + ],
  67 + group: [
  68 + {
  69 + required: true, message: '请单选组'
  70 + }
42 71 ]
43 72 }
44 73 }
... ...