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;
+ }
}
}
};