当前位置: 首页 > article >正文

vue3-tp8-Element:对话框实现

效果

参考框架

 Dialog 对话框 | Element Plus

具体实现

一、建立view页面

/src/views/TestView.vue

二、将路径写入路由

/src/router/index.js

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [//将子项全部存入一个大的路由中layout/index.vue,页面刚进入时调用的时layout/index.vue,在为导航条,默认显示页面/home的内容
    {
      path: '/',
      component: () => import('@/layout/index.vue'),
      redirect: '/home',//默认重定向
      children: [
        {
          path: '/home',
          name: 'home',
          component: HomeView,
        },
        {
          path: '/about',
          name: 'about',
          component: () => import('../views/AboutView.vue'),
        },
      ]
    },
    //登录
    {
      path: '/login',
      name: 'login',
      component: () => import('../views/LoginView.vue'),
    },
    //404
    {
      path: '/:pathMatch(.*)*',
      name: 'not-found',
      component: () => import('@/views/NotFoundView.vue')
    },
    //测试页面
    {
      path: '/test',
      name: 'test',
      component: () => import('../views/TestView.vue')
    },
  ],
})

export default router

三、弹窗(对话框)页面搭建

1、建立页面

/src/components/TestDialog.vue

2、代码实现

<template>
  <!-- 使用Element框架:对话框 -->
  <!-- 
    v-model="dialogVisible"  绑定对话框显示状态 
    title="Tips":对话框标题
    width="500":对话框宽度
    :before-close="handleClose" 关闭对话框前的回调函数
  -->
  <el-dialog
    v-model="dialogVisible"
    title="Tips"
    width="500"
    :before-close="handleClose"
  >
    <span>This is a message</span>
    <template #footer>
      <div class="dialog-footer">
        <!-- 关闭弹窗的点击事件,点击就设置dialogVisible的值为false, -->
        <el-button @click="dialogVisible = false">Cancel</el-button>
        <el-button type="primary" @click="dialogVisible = false">
          Confirm
        </el-button>
      </div>
    </template>
  </el-dialog>
</template>
<script setup>
// 引入计算属性
import { computed } from "vue";

//声明父组件的属性showDialog,类型为Boolean,默认值为false
const props = defineProps({
  showDialog: {
    type: Boolean,
    default: false,
  },
});
//定义emit,用于出发自定义事件,defineEmits声明组件可以触发的事件
// ["update:showDialog"]:数组-列出了组件可以触发的事件名称,这里是update:showDialog事件
const emit = defineEmits(["update:showDialog"]);
//设置父组件的属性showDialog的值,通过dialogVisible.value来设置,
// 因为dialogVisible是一个计算属性,所以可以直接通过dialogVisible.value来设置
const dialogVisible = computed({
  get: () => props.showDialog, //获取父组件showDialog的值
  set: (val) => emit("update:showDialog", val), //设置父组件showDialog的值(触发自定义事件,将子组件的值传给父组件)
});
</script>

四、TestView.vue实现弹窗功能

1、代码实现

<template>
  <span @click="showDialog1 = true"> 点击出现弹窗 </span>
  <!-- 写入弹窗 -->
  <TestDialog
    :showDialog="showDialog1"
    @update:showDialog="(v) => (showDialog1 = v)"
  ></TestDialog>
</template>
<script setup>
// script setup 是一种新的语法糖,用于简化组合式 API 的使用。
// ref是一个创建响应式数据的方法,返回一个可变的响应式对象,该对象具有一个指向内部值的.value属性,当值发生变化,Vue会自动更新相关的视图
import { ref } from "vue";
//引入需要打开的弹窗组件
import TestDialog from "@/components/TestDialog.vue";
//设置弹窗显示状态的默认值为false关闭
const showDialog1 = ref(false);
</script>


http://www.kler.cn/a/442715.html

相关文章:

  • 【汇编】x86汇编编程寄存器资源心中有数
  • 源码安装httpd2.4
  • 机器学习(1):线性回归概念
  • Linux下部署Redis(本地部署超详细)
  • 探索网络安全:浅析文件上传漏洞
  • LabVIEW水位监控系统
  • TCP Analysis Flags 之 TCP Fast Retransmission
  • 【Unity功能集】TextureShop纹理工坊(二)图层(下)
  • 车辆重识别代码笔记12.18
  • JS的原型和原型链浅析
  • 深度学习中,卷积层的若干思考!!!
  • 【OSS】php使用oss存储
  • 【Elasticsearch】使用阿里云 infererence API 及 semantic text 进行向量搜索
  • 27.多态
  • DuckDB: 两种方法实现动态分组查询
  • 解决git push出现的报错:Permission denied (publickey)
  • 本地项目显示正常,打包部署后ElementUI重点饿图标全部显示异常为小方框
  • 天线覆盖方案简图
  • 云连POS-ERP管理系统ZksrService存在SQL注入漏洞
  • bug之浮点数精度求和计算
  • IntelliJ IDEA中的语言级别版本与目标字节码版本配置
  • c++数据结构算法复习基础--13--基数算法
  • STM32卡死、跑飞、进入HardFault_Handler如何精准的确定问题
  • 【go每日一题】 实现生产者消费者模式
  • 电源的分类
  • windows 使用python共享网络给另外一个网卡