使用vue实现各类弹出框组件

yizhihongxing

使用vue实现各类弹出框组件需要遵循以下步骤:

步骤一:创建全局的Vue组件

首先,我们需要创建一个全局的Vue组件,该组件用于渲染弹出框,并设置如下属性:

  • v-show: 用于控制组件的显隐状态
  • title: 弹出框的标题
  • width: 弹出框的宽度
  • height: 弹出框的高度
  • ok: 点击“确认”按钮时的回调函数
  • cancel: 点击“取消”按钮时的回调函数

示例代码如下:

<template>
  <div class="popup" v-show="visible">
    <div class="popup-header">{{ title }}</div>
    <div class="popup-body">
      <slot></slot>
    </div>
    <div class="popup-footer">
      <button @click="ok()">确认</button>
      <button @click="cancel()">取消</button>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    visible: Boolean,
    title: String,
    width: String,
    height: String,
    ok: Function,
    cancel: Function,
  },
};
</script>

<style>
.popup {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  background-color: rgba(0, 0, 0, 0.6);
  display: flex;
  justify-content: center;
  align-items: center;
}

.popup-header {
  background-color: #fff;
  padding: 20px;
  font-size: 18px;
  font-weight: bold;
}

.popup-body {
  background-color: #fff;
  padding: 20px;
  width: 80%;
  max-height: 80%;
  overflow: auto;
}

.popup-footer {
  background-color: #fff;
  padding: 20px;
  display: flex;
  justify-content: flex-end;
}
</style>

步骤二:创建各类弹出框组件

接下来,我们可以根据实际需求,创建各类不同类型的弹出框组件,例如提示框、确认框、输入框等。这些组件需要继承并扩展全局组件,实现具体的功能。

示例一:实现提示框组件

提示框组件只需要在全局组件的基础上,传入相应的数据即可实现。示例代码如下:

<template>
  <popup
    :visible="visible"
    :title="title"
    :width="width"
    :height="height"
    :ok="onOk"
    :cancel="onCancel"
  >
    <p>{{ message }}</p>
  </popup>
</template>

<script>
import Popup from '@/components/Popup.vue';

export default {
  extends: Popup,
  props: {
    message: String,
  },
  data() {
    return {
      title: '提示框',
      width: '400px',
      height: '200px',
      visible: true,
    };
  },
  methods: {
    onOk() {
      this.visible = false;
    },
    onCancel() {
      this.visible = false;
    },
  },
};
</script>

示例二:实现确认框组件

确认框组件需要额外传入一个确认信息的文本,以及确认框的文案。示例代码如下:

<template>
  <popup
    :visible="visible"
    :title="title"
    :width="width"
    :height="height"
    :ok="onOk"
    :cancel="onCancel"
  >
    <p>{{ message }}</p>
  </popup>
</template>

<script>
import Popup from '@/components/Popup.vue';

export default {
  extends: Popup,
  props: {
    message: String,
    confirmText: {
      type: String,
      default: '确定',
    },
  },
  data() {
    return {
      title: '确认框',
      width: '400px',
      height: '200px',
      visible: true,
    };
  },
  methods: {
    onOk() {
      this.visible = false;
      this.$emit('confirm');
    },
    onCancel() {
      this.visible = false;
      this.$emit('cancel');
    },
  },
};
</script>

步骤三:在组件中使用弹出框

最后,我们可以在其他组件中引入这些弹出框组件,并使用v-show指令控制它们的显隐状态。例如,在一个按钮上绑定click事件,点击后弹出提示框:

<template>
  <div>
    <button @click="showMessage">显示提示框</button>
    <message-popup ref="message" :message="message"></message-popup>
  </div>
</template>

<script>
import MessagePopup from '@/components/MessagePopup.vue';

export default {
  components: {
    'message-popup': MessagePopup,
  },
  data() {
    return {
      message: 'Hello, world!',
    };
  },
  methods: {
    showMessage() {
      this.$refs.message.visible = true;
    },
  },
};
</script>

以上为使用Vue实现各类弹出框组件的完整攻略,其中包含了两个示例,分别实现了提示框和确认框组件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用vue实现各类弹出框组件 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 关于vue-cli3+webpack热更新失效及解决

    关于vue-cli3+webpack热更新失效及解决,我将为您提供完整的攻略。 问题描述 在使用vue-cli3+webpack进行开发时,有时候会发现修改代码后页面没有自动刷新,导致热更新失效。这是因为webpack-dev-server的默认watch机制有问题,解决这个问题可以采用以下方案。 解决方案 方案一:关闭webpack的watch机制,使用w…

    Vue 2023年5月28日
    00
  • Vue实战之掌握自定义指令

    下面是Vue实战之掌握自定义指令的完整攻略: 1. 自定义指令的作用及使用场景 自定义指令是Vue中一个非常重要的功能,它可以让我们自定义DOM操作行为,比如让元素获取焦点、滚动到指定位置、自动聚焦等。自定义指令的使用场景非常广泛,比如: 在表单中监听输入框焦点事件,根据输入框的类型来动态切换键盘类型; 在移动端页面中使用Better-Scroll滚动插件时…

    Vue 2023年5月27日
    00
  • 详解Vue + Vuex 如何使用 vm.$nextTick

    下面让我给您详细讲解“详解Vue + Vuex 如何使用 vm.$nextTick”的完整攻略。 简介 在Vue.js中,使用vm.$nextTick方法可以强制Vue.js在下次DOM更新循环结束后执行回调,这样可以确保我们获取到的DOM元素是更新后的DOM元素,而不是更新前的DOM元素,因为DOM更新是异步进行的。 使用方法 在一些需要对DOM立即进行操…

    Vue 2023年5月28日
    00
  • Vue3生命周期函数和方法详解

    Vue3生命周期函数和方法详解 生命周期函数 Vue3中的生命周期函数有如下: beforeCreate 在实例准备被创建之前,也就是数据观测和初始化事件还没开始的时候触发。在这个阶段无法获取到 data 和 methods 中的数据。此时我们可以在此阶段中做一些初始化的操作,如全局变量的初始化。 export default { beforeCreate(…

    Vue 2023年5月28日
    00
  • vuex状态持久化在vue和nuxt.js中的区别说明

    接下来我会详细讲解有关“vuex状态持久化在vue和nuxt.js中的区别说明”的攻略。 1. 什么是vuex状态持久化 Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,例如用户信息、用户账户等。在Vuex中,状态state、mutation(操作状态的函数)和action(异步操作state的函数)被定义…

    Vue 2023年5月27日
    00
  • vue项目刷新当前页面的三种方式(重载当前页面数据)

    有关Vue项目刷新当前页面的三种方式,可以从以下三个方面展开说明: 1. 利用location.reload()方法进行页面刷新 在Vue中,可以通过调用浏览器原生的location.reload()方法来实现页面刷新。该方法会重新加载当前页面,重新发起一次网络请求,对页面元素进行重绘,因此能够实现重载当前页面数据的目的。可以在Vue组件中定义一个方法,通过…

    Vue 2023年5月29日
    00
  • vite+vue3.0+ts+element-plus快速搭建项目的实现

    一、背景介绍 在前端开发过程中,我们需要使用一些构建工具来快速搭建项目,而vite是一个新兴的前端构建工具,可以快速构建现代Web应用程序。 Vue3.0是Vue.js框架的最新版本,相比于Vue2.0,性能更加优越、语法更加简洁明了、开发效率更高。 对于TypeScript开发者,TypeScript提供了更强大的类型检查和自动补全功能,可以提高代码的健壮…

    Vue 2023年5月28日
    00
  • vuex(vue状态管理)的特殊应用案例分享

    下面我给您详细讲解一下“Vuex(Vue状态管理)的特殊应用案例分享”的完整攻略。 什么是Vuex Vuex是Vue.js的状态管理模式和库,它可以将数据存储到一个全局的状态树中,并通过一个可预测的方式修改这些数据。Vuex主要解决了多个组件之间数据共享、组件通信等问题。 Vuex的使用场景 在Vuex中可以管理组件的状态,这些状态可以在组件之间共享,在开发…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部