本文实例为大家分享了vue iview封装模态框的具体代码,供大家参考,具体内容如下
子组件
<template> ? <Modal ? ? :value="isShowModal" ? ? :width="width" ? ? :title="title" ? ? @on-visible-change="getFaultModalStatusChange" ? > ? ? <slot name="content"></slot> ? ? <div slot="footer"> ? ? ? <div> ? ? ? ? <Button type="success" :loading="loading" @click="submit">确认</Button> ? ? ? ? <Button class="cancelButton" @click="cancel">取消</Button> ? ? ? </div> ? ? </div> ? </Modal> </template> ? <script> export default { ? name: "ModalBlock", ? props: { ? ? isShowModal: { ? ? ? type: Boolean, ? ? ? default: false ? ? }, ? ? title: { ? ? ? type: String ? ? }, ? ? width: { ? ? ? type: Number ? ? }, ? ? loading: { ? ? ? type: Boolean, ? ? ? default: false ? ? } ? }, ? methods: { ? ? cancel: function() { ? ? ? this.$emit("modalCancel"); ? ? }, ? ? submit() { ? ? ? this.$emit("modalSubmit"); ? ? }, ? ? getFaultModalStatusChange(e) { ? ? ? this.$emit("modalStatusChange", e); ? ? } ? } }; </script> ? <style scoped> </style>
父组件引入
<template> ? <div> ? ? <Button type="primary" @click="isShowModal = true">Display dialog box</Button> ? ? <modal-block ? ? ? :isShowModal="isShowModal" ? ? ? title="搜索框" ? ? ? :width="640" ? ? ? @modalSubmit="modalSubmit" ? ? ? @modalCancel="modalCancel" ? ? ? @modalStatusChange="modalStatusChange" ? ? > ? ? ? <div slot="content"> ? ? ? ? <Row> ? ? ? ? ? <Col span="12"> ? ? ? ? ? ? <div> ? ? ? ? ? ? ? <Input ? ? ? ? ? ? ? ? v-model="SearchVal" ? ? ? ? ? ? ? ? icon="ios-search" ? ? ? ? ? ? ? ? placeholder="Enter something..." ? ? ? ? ? ? ? ? style="width: 200px" ? ? ? ? ? ? ? ? @on-click="handleSearch" ? ? ? ? ? ? ? ? autocomplete ? ? ? ? ? ? ? /> ? ? ? ? ? ? </div> ? ? ? ? ? ? <div style="height:300px;overflow-y: scroll; margin-top:15px;"> ? ? ? ? ? ? ? <RadioGroup v-model="listVal" vertical @on-change="changeSerachVal"> ? ? ? ? ? ? ? ? <Radio :label="item.label" v-for="(item,i) in searchList" :key="i"> ? ? ? ? ? ? ? ? ? <span>{{item.value}}</span> ? ? ? ? ? ? ? ? ? <Icon :type="item.icon" /> ? ? ? ? ? ? ? ? </Radio> ? ? ? ? ? ? ? </RadioGroup> ? ? ? ? ? ? </div> ? ? ? ? ? </Col> ? ? ? ? ? <Col span="12">{{searDtail}}</Col> ? ? ? ? </Row> ? ? ? </div> ? ? </modal-block> ? </div> </template> <script> import ModalBlock from "@/common/ModalItem/ModalSerach"; ? export default { ? name: "ImageUpload", ? components: { ModalBlock }, ? ? data() { ? ? return { ? ? ? width: 640, ? ? ? SearchVal: "", ? ? ? listVal: "", ? ? ? searDtail: "", ? ? ? isShowModal: false, ? ? ? ? searchList: [ ? ? ? ? { ? ? ? ? ? label: "1", ? ? ? ? ? icon: "logo-apple", ? ? ? ? ? value: "111111" ? ? ? ? }, ? ? ? ? { ? ? ? ? ? label: "2", ? ? ? ? ? icon: "logo-apple", ? ? ? ? ? value: "111111" ? ? ? ? }, ? ? ? ? { ? ? ? ? ? label: "3", ? ? ? ? ? icon: "logo-apple", ? ? ? ? ? value: "111111" ? ? ? ? }, ? ? ? ? { ? ? ? ? ? label: "3", ? ? ? ? ? icon: "logo-apple", ? ? ? ? ? value: "111111" ? ? ? ? }, ? ? ? ? { ? ? ? ? ? label: "4", ? ? ? ? ? ? icon: "logo-apple", ? ? ? ? ? value: "111111" ? ? ? ? }, ? ? ? ? { ? ? ? ? ? label: "5", ? ? ? ? ? ? icon: "logo-apple", ? ? ? ? ? value: "111111" ? ? ? ? } ? ? ? ] ? ? }; ? }, ? methods: { ? ? // 模态输入框搜索 ? ? handleSearch() { ? ? ? console.log(`modalSubmit11111111`); ? ? }, ? ? // 点击模态框单选框触发事件 ? ? changeSerachVal(e) { ? ? ? if (e == 1) { ? ? ? ? this.searDtail = "1111"; ? ? ? } else if (e == 2) { ? ? ? ? this.searDtail = "22222222222"; ? ? ? } ? ? }, ? ? // 模态框确定事件 ? ? modalSubmit() { ? ? ? this.isShowModal = false; ? ? }, ? ? // 模态框取消事件 ? ? ? modalCancel() { ? ? ? this.isShowModal = false; ? ? }, ? ? // 模态框关闭触发事件 ? ? modalStatusChange(e) { ? ? ? if (e === false) { ? ? ? ? this.isShowModal = false; ? ? ? } ? ? } ? } }; </script> <style scoped> </style>
一定要加 @on-visible-change="getFaultModalStatusChange" 这个事件,不然点击按钮的时候会报错
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
查看更多关于vue iview封装模态框的方法的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did124387