diff --git a/docs/examples-docs/switch.md b/docs/examples-docs/switch.md index adaaee710..4ebdd4949 100644 --- a/docs/examples-docs/switch.md +++ b/docs/examples-docs/switch.md @@ -13,15 +13,26 @@ +``` +::: + +:::demo 基础用法 +```html + +
{{ switchState2 ? ' ON' : 'OFF' }}
+ + + ``` ::: @@ -106,11 +156,22 @@ export default { :::demo ```html - +
ON, LOADING
- +
OFF, LOADING
+ + ``` ::: @@ -118,12 +179,7 @@ export default { | 参数 | 说明 | 类型 | 默认值 | 可选值 | |-----------|-----------|-----------|-------------|-------------| -| checked | 开关状态 | `boolean` | `false` | `true`, `false` | +| v-model | 开关状态 | `boolean` | `false` | `true`, `false` | | loading | loading状态 | `boolean` | `false` | `true`, `false` | | disabled | 禁用状态 | `boolean` | `false` | `true`, `false` | - -### Event - -| 事件名 | 说明 | 参数 | -|-----------|-----------|-----------| -| change | 开关状态切换时触发 | `value`:开关新的状态值 | +| onChange | 开关状态切换回调(默认则改变开关状态) | `function` | - | - | diff --git a/packages/switch/src/switch.vue b/packages/switch/src/switch.vue index 3249c3b93..2e8d28ae2 100644 --- a/packages/switch/src/switch.vue +++ b/packages/switch/src/switch.vue @@ -13,7 +13,7 @@ import ZanLoading from 'packages/loading'; * zan-switch * @module components/switch * @desc 开关 - * @param {boolean} [checked=false] - 开关状态 + * @param {boolean} [value=false] - 开关状态 * @param {boolean} [disabled=false] - 禁用 * @param {boolean} [loading=false] - loading状态 * @@ -26,9 +26,24 @@ export default { 'zan-loading': ZanLoading }, props: { - checked: Boolean, + value: Boolean, disabled: Boolean, - loading: Boolean + loading: Boolean, + onChange: Function + }, + data() { + return { + checked: this.value + } + }, + watch: { + checked(val) { + this.$emit('input', val); + }, + + value(val) { + this.checked = val; + } }, computed: { switchStates: function() { @@ -47,7 +62,12 @@ export default { */ toggleState: function() { if (this.disabled || this.loading) return; - this.$emit('change', !this.checked); + console.log('d'); + if (this.onChange) { + this.onChange(!this.checked); + } else { + this.checked = !this.checked; + } } } };