问题:
element dialog关闭弹窗,检验未去掉
父组件:
<el-button @click="add">新增</el-button>
<el-button @click="edit">编辑</el-button>
<!-- 新增 or 编辑 -->
<Add :visible.sync="visible" :infoData="infoData" @getLists="getLists"></Add>
import Add from './add.vue';
import config from './config.js';
components: { Add },
add() {
this.infoData = {};
this.type = 'add';
this.visible = true;
},
edit(row) {
if (row.id) {
energyDetail(row.id).then(res => {
if (res.data) {
this.parData = res.data;
this.visible = true;
}
});
}
}
子组件:
<el-dialog :title="parData.id ? '编辑' : '新增'" v-if="showVisible" :visible.sync="showVisible" @close="close" @confirm="confirm" @open="open" >
<el-form label-position="top" ref="baseFormRef" :model="formModel" :rules="bsaeFormRules"></el-form>
</el-dialog>
import config from './config.js';
export default {
mixins: [config],
props: {
visible: { type: Boolean, default: false },
parData: {
type: Object,
default: () => {
return {};
}
}
},
computed: {
showVisible: {
get() {
return this.visible;
},
set(val) {
this.$emit('update:visible', val);
}
}
},
watch: {
showVisible(val) {//监听弹窗,打开时调用open回调方法调接口,
if (val) this.open();
}
},
},
methods: {
open() {//open()事件弹窗打开时的回调。
if (this.infoData.id) {//编辑
this.formModel = { ...this.infoData, time: [] };
this.formModel.time.push(this.infoData.beginTime);
this.formModel.time.push(this.infoData.endTime);
} else {//新增
this.formModel = { time: [] };
}
},
confirm(){
//保存成功时的操作......
},
close(){
this.$refs.baseFormRef.resetFields();//清空表格数据
}
},
总结:
1.vue父传子
2.vue watcher监听
3.element dialog open事件