Switch add new prop: beforeChange
This commit is contained in:
parent
1228f2877b
commit
d56bc97007
2 changed files with 37 additions and 12 deletions
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<i-switch v-model="m1" :loading="loading">
|
<i-switch v-model="m1" :loading="loading" @on-change="change" :before-change="beforeChange">
|
||||||
<span slot="open">开</span>
|
<span slot="open">开</span>
|
||||||
<span slot="close">关</span>
|
<span slot="close">关</span>
|
||||||
</i-switch>
|
</i-switch>
|
||||||
|
@ -32,6 +32,7 @@
|
||||||
<br><br>
|
<br><br>
|
||||||
<i-switch :disabled="disabled"></i-switch>
|
<i-switch :disabled="disabled"></i-switch>
|
||||||
<Button type="primary" @click="disabled = !disabled">Toggle Disabled</Button>
|
<Button type="primary" @click="disabled = !disabled">Toggle Disabled</Button>
|
||||||
|
<Divider></Divider>
|
||||||
<i-switch v-model="switch1" true-color="#13ce66" false-color="#ff4949" />
|
<i-switch v-model="switch1" true-color="#13ce66" false-color="#ff4949" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -42,12 +43,26 @@
|
||||||
m1: true,
|
m1: true,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
loading: false,
|
loading: false,
|
||||||
switch1 : true
|
switch1: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
change (status) {
|
change (status) {
|
||||||
console.log(status)
|
console.log(status)
|
||||||
|
},
|
||||||
|
beforeChange () {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.$Modal.confirm({
|
||||||
|
title: '切换确认',
|
||||||
|
content: '您确认要切换开关状态吗?',
|
||||||
|
onOk: () => {
|
||||||
|
resolve();
|
||||||
|
},
|
||||||
|
onCancel: () => {
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,9 +16,7 @@
|
||||||
<script>
|
<script>
|
||||||
import { oneOf } from '../../utils/assist';
|
import { oneOf } from '../../utils/assist';
|
||||||
import Emitter from '../../mixins/emitter';
|
import Emitter from '../../mixins/emitter';
|
||||||
|
|
||||||
const prefixCls = 'ivu-switch';
|
const prefixCls = 'ivu-switch';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'iSwitch',
|
name: 'iSwitch',
|
||||||
mixins: [ Emitter ],
|
mixins: [ Emitter ],
|
||||||
|
@ -59,7 +57,8 @@
|
||||||
},
|
},
|
||||||
falseColor: {
|
falseColor: {
|
||||||
type: String
|
type: String
|
||||||
}
|
},
|
||||||
|
beforeChange: Function
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
@ -94,18 +93,29 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleToggle () {
|
||||||
|
const checked = this.currentValue === this.trueValue ? this.falseValue : this.trueValue;
|
||||||
|
this.currentValue = checked;
|
||||||
|
this.$emit('input', checked);
|
||||||
|
this.$emit('on-change', checked);
|
||||||
|
this.dispatch('FormItem', 'on-form-change', checked);
|
||||||
|
},
|
||||||
toggle (event) {
|
toggle (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (this.disabled || this.loading) {
|
if (this.disabled || this.loading) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!this.beforeChange) {
|
||||||
const checked = this.currentValue === this.trueValue ? this.falseValue : this.trueValue;
|
return this.handleToggle();
|
||||||
|
}
|
||||||
this.currentValue = checked;
|
const before = this.beforeChange();
|
||||||
this.$emit('input', checked);
|
if (before && before.then) {
|
||||||
this.$emit('on-change', checked);
|
before.then(() => {
|
||||||
this.dispatch('FormItem', 'on-form-change', checked);
|
this.handleToggle();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.handleToggle();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
Loading…
Add table
Reference in a new issue