Dialog: remove v-model dependency of manual manipulation (#1038)

pull/1099/head
杨奕 2016-11-16 11:05:23 +08:00 committed by FuryBean
parent 0fffead922
commit 22bc5f312a
3 changed files with 19 additions and 7 deletions

View File

@ -46,7 +46,7 @@
"async-validator": "^1.6.6", "async-validator": "^1.6.6",
"deepmerge": "^1.2.0", "deepmerge": "^1.2.0",
"throttle-debounce": "^1.0.1", "throttle-debounce": "^1.0.1",
"vue-popup": "^0.2.10", "vue-popup": "^0.2.12",
"wind-dom": "0.0.3" "wind-dom": "0.0.3"
}, },
"peerDependencies": { "peerDependencies": {

View File

@ -1,6 +1,6 @@
<template> <template>
<transition name="dialog-fade"> <transition name="dialog-fade">
<div class="el-dialog__wrapper" v-show="value" @click.self="handleWrapperClick"> <div class="el-dialog__wrapper" v-show="visible" @click.self="handleWrapperClick">
<div <div
class="el-dialog" class="el-dialog"
:class="[sizeClass, customClass]" :class="[sizeClass, customClass]"
@ -75,9 +75,18 @@
default: '15%' default: '15%'
} }
}, },
data() {
return {
visible: false
};
},
watch: { watch: {
value(val) { value(val) {
this.visible = val;
},
visible(val) {
this.$emit('input', val);
if (val) { if (val) {
this.$emit('open'); this.$emit('open');
this.$nextTick(() => { this.$nextTick(() => {
@ -101,7 +110,7 @@
methods: { methods: {
handleWrapperClick() { handleWrapperClick() {
if (this.closeOnClickModal) { if (this.closeOnClickModal) {
this.$emit('input', false); this.close();
} }
} }
}, },

View File

@ -6,7 +6,7 @@ describe('Dialog', () => {
destroyVM(vm); destroyVM(vm);
}); });
it('create', () => { it('create', done => {
vm = createVue({ vm = createVue({
template: ` template: `
<div> <div>
@ -22,9 +22,12 @@ describe('Dialog', () => {
} }
}, true); }, true);
const dialog = vm.$children[0]; const dialog = vm.$children[0];
setTimeout(() => {
expect(document.querySelector('.v-modal')).to.exist; expect(document.querySelector('.v-modal')).to.exist;
expect(vm.$el.querySelector('.el-dialog__title').textContent).to.equal('dialog test'); expect(vm.$el.querySelector('.el-dialog__title').textContent).to.equal('dialog test');
expect(dialog.$el.style.display).to.not.equal('none'); expect(dialog.$el.style.display).to.not.equal('none');
done();
}, 10);
}); });
it('render correct content', done => { it('render correct content', done => {