vue中的模态对话框组件实现过程

2020-06-13 10:37:16易采站长站整理

</div>
</template>

在引用组件的地方添加 :

show-dialog="showDialog" :msg="msg" :type="type"
这几个属性,将其值传递给对话框组件


<v-dialog :show-dialog="showDialog" :msg="msg" :type="type"></v-dialog>

需要注意的是showDialog在组件中需要写成show-dialog这种形式,不然会获取不到数据

 我们在data中定义这些属性


data: {
msg:'',
showDialog:false,
type:1,// 提示类型 1单按钮提示框 2双按钮提示框
},

然后,我们在按钮点击提交的时候触发弹出对话框事件


submit:function(){
//弹出对话框组件
if(!this.isLogin){//未登录
this.msg = "请先去登录再领取金额";
this.showDialog = !this.showDialog;
this.type = 2;
return;
}
if(this.amount){
if(this.amount<1 || this.amount>1000){
this.msg = "输入金额不能低于1元大于1000";
this.showDialog = !this.showDialog;
this.type = 1;
}else{
this.msg = "领取成功,请在账户中心查看";
this.showDialog = !this.showDialog;
this.type = 1;
}
}else{
this.msg = "领取金额不能为空";
this.showDialog = !this.showDialog;
this.type = 1;
}
}

这样,我们就能弹出对话框组件了,通过msg设置不同的提示消息

那么,我们该怎么关闭这个对话框呢 ,这里就涉及到子组件需要向父组件传递信息了

主要通过$emit来触发父类事件,如:

this.$emit('close-dialog');
然后在父类通过v-on来监听子类触发的事件,
v-on:close-dialog="closeDialog"
,也可简写写成
@close-dialog="closeDialog"

代码如下:

在v-dialog标签中添加@close-dialog=”closeDialog”监听子组件触发的事件


<v-dialog :show-dialog="showDialog" :msg="msg" :type="type" @close-dialog="closeDialog"></v-dialog>

然后定义closeDialog函数修改showDialog 的状态         


closeDialog:function(){//关闭对话框
this.showDialog = false;
}

这样同样也需要注意的是监听函数closeDialog需要写成close-dialog形式