vue页面父子传参&引进模态框组件-20

导读:本篇文章讲解 vue页面父子传参&引进模态框组件-20,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一:新建需要引进的模态框dialog

1.新建html页面

<style>
    #userListDetailDialog .footerButton {
        display: flex;
        justify-content: center;
    }
</style>
<script type="text/x-template" id="user-list-detail">
    <el-dialog id="userListDetailDialog" :visible.sync="show" :close-on-click-modal="false" v-on:close="closeDialog" title="引进dialog的标题" width="1300px">
        <el-card class="box-card">
           <div></div>
        </el-card>
        <div class="gap-line2"></div>
        <div class="footerButton">
            <el-button  size="mini" type="info" v-on:click="closeDialog" icon="el-icon-back">关闭</el-button>
        </div>
    </el-dialog>
</script>
<script src="${ctxPath}/static/modular/ndms4/need/userList.js?v=${webappVersion}"></script>
  • :visible.sync=“show”:表示当前模态框是否显示
  • v-on:close=“closeDialog”:表示当前模态框的关闭方法
  • <script src=>:表示引入html对应的js文件
  • 在script标签中id=“user-list-detail”:user-list-detail的值与js当中的template的值保持一致
    在这里插入图片描述

2.新建js页面

Vue.component("user-list-dialog", {
    template: "#user-list-detail",
    data() {
        return {};
    },
    watch: {
        show(show) {
            let self = this;
            if (show) {
                // 数据初始化
                self.init();
            }
        },
    },
    props: {
        show: {
            type: Boolean,
            default: false
        },
        param: {
            type: Object,
            default() {
                return [];
            }
        }
    },
    methods: {
        /**
         * 初始化页面
         */
        init:function(){
            //查询列表数据
            self.search();
        },
        /**
         * 查询人员清单数据
         */
        search() {
        },
        /**
         * 关闭
         */
        closeDialog() {
            let self = this;
            self.$emit('update:show', false);
        },
    }
});
  • user-list-dialog:与引入当前组件的标签保持一致。
    例:<*user-list-dialog></*user-list-dialog>
  • template: “#user-list-detail”:其中#user-list-detail与dialog中的组件id保持一致。
  • watch事件用来监听show的属性,当传过来的show等于true时,初始化当前引入的组件。
  • prop属性用来接收参数
    1)show:类型时boolean类型,默认值是false,不显示
    2)param:类型时object类型,表示从父页面传递过来的参数。
  • closeDialog表示关闭当前dialog组件,self.$emit(‘update:show’, false);
    1)emit表示子页面向父页面传递参数false。
    2)父页面获取方式update:show

二:引入当前dialog

1.在父页面的html中引入当前dialog

@layout("/common/_container_vue_ele.html"){
@layout("/ndms4/need/userList.html"){
@}
<style>
</style>
<link href="${ctxPath}/static/css/ndms4/table-style.css?v=${webappVersion}" rel="stylesheet">
<div id="app" v-cloak>
    <el-card class="box-card">
       <div></div>
    </el-card>
    <!--人员清单dialog-->
    <user-list-dialog :show.sync="userListDialog.show" :param="userListDialog.param" v-on:search="search"></user-list-dialog>
</div>
<script src="${ctxPath}/static/modular/ndms4/need/list.js?v=${webappVersion}" type="module"></script>
@}
  • layout(“/ndms4/need/userList.html”):表示当前dialog模态框所在的路径
  • user-list-dialog就表示当前引入的子组件
  • :show.sync:是否显示
  • :param:传递的参数

2.引入父组件js

import {userListDialog} from '../../ndms4/medium/user_list_dialog_medium.js'
new Vue({
    el: '#app',
    data() {
        return {
            // 引入需求信息模态框模块参数与方法
            userListDialog:userListDialog,  
        };
    },
    methods: {
        /**
         * 人员清单
         */
        userList:function() {
            let self = this;
            if (self.selectedRow) {
                let param = {
                    needId:self.currentRowId,
                }
                userListDialog.openUserListDialog(param);
            } else {
                self.$message.info("请先选中表格中的某一记录!");
                return;
            }
        },

    }
});
  • import {userListDialog} from ‘…/…/ndms4/medium/user_list_dialog_medium.js’:引入一个js文件用来传递参数。
  • userListDialog:userListDialog, :将当前文件注册到容器中。
  • userListDialog.openUserListDialog(param):调用userListDialog组件中openUserListDialog方法,用来向引入的js文件传递参数。

3.新建user_list_dialog_medium.js页面,此页面就是为了接收从父组件往子组件传递的参数。

export const userListDialog = new Vue({
    data() {
        return {
            show: false,
            // 打开导入文件模态框需要传递的参数集合
            param: {
                needId:'',
                recruitPlanDate:'',
            }
        };
    },
    methods: {
        openUserListDialog(param) {
            let self = this;
            self.show = true;
            self.param = param;
        }
    }
});
  • userListDialog与引入的组件名保持一致。
    在这里插入图片描述
  • return中封装了show和param属性
  • openUserListDialog方法用来传递参数
  • 在父组件引入的模态框中,通过show和param参数控制引入模态框的显隐。
<!--人员清单dialog-->
    <user-list-dialog :show.sync="userListDialog.show" :param="userListDialog.param" v-on:search="search"></user-list-dialog>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84129.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!