vue弹出框组件封装实例代码

下面我将为你详细讲解“Vue弹出框组件封装实例代码”的攻略。

一、组件功能

我们要封装的组件是一个弹出框组件,其功能包括:

  1. 支持自定义标题和内容
  2. 支持自定义底部按钮(例如确定和取消)
  3. 支持点击遮罩层关闭弹出框

二、组件使用

在使用该组件时,我们需要做以下几步:

  1. 下载并安装该组件所需要的依赖库
  2. 在项目中引入该组件
  3. 使用该组件

1. 下载并安装依赖库

该组件所需要的依赖库有两个,一个是Vue.js本身,另一个是Vue-awesome库,用于支持使用图标。

你可以使用以下命令来安装这两个依赖库:

npm install vue
npm install vue-awesome

2. 引入组件

将组件代码封装到一个Vue组件中,并导出以供其他文件使用:

<template>
  <div v-show="show" class="dialog">
    <div class="dialog-mask" @click="close"></div>
    <div class="dialog-box">
      <div class="dialog-header">
        <h3 class="dialog-title">{{ title }}</h3>
        <i class="dialog-close-icon" @click="close"></i>
      </div>
      <div class="dialog-body">
        <slot></slot>
      </div>
      <div class="dialog-footer" v-if="buttons.length">
        <button v-for="(item, index) in buttons" :key="index" @click="handleButtonClick(item)">{{ item.text }}</button>
      </div>
    </div>
  </div>
</template>

<script>
import 'vue-awesome/icons/times-circle'
import Icon from 'vue-awesome/components/Icon'

export default {
  name: 'Dialog',
  components: {
    'icon': Icon
  },
  props: {
    show: {
      type: Boolean,
      default: false
    },
    title: {
      type: String,
      default: '提示'
    },
    buttons: {
      type: Array,
      default: () => []
    }
  },
  methods: {
    close() {
      this.$emit('close')
    },
    handleButtonClick(item) {
      this.$emit('button-click', item)
    }
  }
}
</script>

<style>
  .dialog {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1000;
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .dialog-mask {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background-color: rgba(0, 0, 0, 0.3);
  }

  .dialog-box {
    display: flex;
    flex-direction: column;
    width: 400px;
    background-color: #fff;
    border-radius: 4px;
    box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
    overflow: hidden;
  }

  .dialog-header {
    display: flex;
    align-items: center;
    padding: 16px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 18px;
    font-weight: bold;
  }

  .dialog-title {
    flex: 1;
  }

  .dialog-close-icon {
    font-size: 22px;
    cursor: pointer;
  }

  .dialog-body {
    padding: 24px;
  }

  .dialog-footer {
    display: flex;
    justify-content: flex-end;
    padding: 16px;
    border-top: 1px solid #f0f0f0;
  }

  .dialog-footer button {
    margin-left: 16px;
    font-size: 14px;
    padding: 8px 16px;
    border: none;
    border-radius: 4px;
    color: #fff;
    background-color: #1890ff;
    box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
    cursor: pointer;
    outline: none;
  }
</style>

3. 使用组件

在需要使用该组件的页面中,先通过import语句导入该组件,再在模板中使用该组件。

例如,我们在一个Vue页面中使用这个组件:

<template>
  <div>
    <button @click="showDialog">显示弹出框</button>

    <Dialog :show.sync="dialogVisible" :title="title" :buttons="buttons" @close="handleCloseDialog" @button-click="handleButtonClick">
      <p>{{message}}</p>
    </Dialog>
  </div>
</template>

<script>
import Dialog from './components/Dialog'

export default {
  components: {
    Dialog
  },
  data: {
    dialogVisible: false,
    title: '',
    message: '',
    buttons: [
      {
        text: '确定',
        type: 'primary',
        value: true
      },
      {
        text: '取消',
        type: 'default',
        value: false
      }
    ]
  },
  methods: {
    showDialog() {
      this.dialogVisible = true
      this.title = '提示'
      this.message = '确认删除这篇文章吗?'
    },
    handleCloseDialog() {
      this.dialogVisible = false
    },
    handleButtonClick(item) {
      if (item.value) {
        // 点击确定按钮的逻辑代码
      } else {
        // 点击取消按钮的逻辑代码
      }
    }
  }
}
</script>

这个例子中,我们通过按钮触发showDialog函数,然后弹出框显示询问是否确认删除文章。在对话框底部提供了确定和取消两个按钮,用户可以进行选择。

三、代码解释

这个组件主要由以下几个部分组成:

1. 模板部分

这部分是组件的模板代码,用来显示弹出框的样式和元素,并与Vue.js的数据进行绑定。它包括了以下几个部分:

  • v-show指令:控制组件是否显示。

  • .dialog-mask类:显示遮罩层。

  • .dialog-box类:显示对话框内容。

  • .dialog-header类:显示对话框的标题。

  • .dialog-body类:显示对话框的内容。

  • .dialog-footer类:显示对话框底部的按钮。

  • v-for指令:用来循环渲染按钮。

2. 脚本部分

这部分是组件的脚本代码,用来提供组件的功能和与模板进行交互。它包括了以下几个部分:

  • import语句:用来导入依赖的Vue-awesome库和组件的图标。

  • name属性:组件的名称。

  • components属性:组件中使用到的组件。

  • props属性:组件的props属性,用于父组件向子组件传递数据。

  • methods属性:组件的方法。

  • $emit方法:用来触发自定义事件的方法。

3. 样式部分

这部分是组件的样式代码,用来设置组件中各个元素的样式。

它包括了以下几个部分:

  • .dialog类:用来设置对话框的样式。

  • .dialog-mask类:用来设置遮罩层的样式。

  • .dialog-box类:用来设置对话框中包裹内容的盒子的样式。

  • .dialog-header类:用来设置对话框的标题的样式。

  • .dialog-title类:用来设置对话框的标题文字的样式。

  • .dialog-close-icon类:用来设置对话框的关闭图标的样式。

  • .dialog-body类:用来设置对话框的内容的样式。

  • .dialog-footer类:用来设置对话框底部按钮的样式。

  • v-for指令:用来设置按钮的样式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue弹出框组件封装实例代码 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 电脑无法启动软件提示使用命令行工具sxstrace的故障原因及解决方法

    电脑无法启动软件提示使用命令行工具sxstrace的故障原因及解决方法 问题描述 在启动某些软件时,电脑会提示使用命令行工具sxstrace来诊断故障。这时无论如何操作软件都无法启动。这是一种非常常见的故障,本文将详细介绍这种故障的原因和解决方法。 故障原因 sxstrace是一种Windows命令行工具,用于跟踪Windows应用程序(包括应用程序依赖的组…

    other 2023年6月25日
    00
  • JAVA中static方法的用法实例详解

    JAVA中static方法的用法实例详解 1. static方法概述 在JAVA中,static方法是指被声明为静态的方法。静态方法不需要实例化类对象即可调用,可以直接通过类名来访问。static方法在类加载时就已经存在于内存中,不依赖于类的实例。以下是关于static方法的几个要点:- static方法可以通过类名来调用,不需要创建对象实例。- stati…

    other 2023年6月28日
    00
  • C语言关键字之auto register详解

    当编写C程序时,我们使用各种变量,函数和关键字。其中关键字指的是C语言定义为具有特殊含义和用途的单词,这些单词不能用作变量名或函数名。本文将详细解释C语言中的两个关键字之一:auto和register。 auto关键字 概述 auto关键字用于定义自动变量,即生存期与所在函数或块相同的变量。auto关键字可以用于函数中的局部变量以及块中的局部变量,也可以省略…

    other 2023年6月27日
    00
  • C++(STL库)之顺序容器vector的使用

    C++(STL库)之顺序容器vector的使用 什么是vector vector是C++ STL中的一种顺序容器,由于其高效的随机存储和动态调整大小的特点,使用非常广泛。vector容器存放的是一个数组,它允许高效的在尾部插入和删除元素,并支持在序列运行时动态调整容量大小,在操作上与原生数组相似但更加方便且更加安全。 vector基本操作 向vector中插…

    other 2023年6月26日
    00
  • guava的两种本地缓存策略

    guava的两种本地缓存策略 Guava是一个基于Java的开源库,提供了一些常用的工具类,其中包括了本地缓存的实现。Guava缓存可以快速地添加逐出策略、提供统计信息和异步加载等功能,可用于提高应用程序的性能。 在Guava缓存中,有两种本地缓存策略:基于大小的缓存和基于时间的缓存。 基于大小的缓存 基于大小的缓存指使用缓存条目的数量或缓存的总大小作为驱逐…

    其他 2023年3月28日
    00
  • 电脑自动重启怎么解决?解决电脑自动重启关机问题方法(史上最全面最详细)

    电脑自动重启怎么解决? 在电脑开机时,如果出现自动重启、蓝屏等异常情况,很可能是出现了软件或硬件故障。这时候需要采取一些措施来解决这个问题。 方法一:检查CPU散热器 一些自动重启和死机的现象,往往是由于CPU散热器出现故障造成的。为解决这个问题,可以通过以下步骤: 使用工具打开电脑机箱,拆下CPU散热器 清洗CPU散热器,去除积尘 再次安装CPU散热器,并…

    other 2023年6月26日
    00
  • 电脑运行命令以及dos命令大全介绍

    以下是“电脑运行命令以及dos命令大全介绍”的完整攻略: 电脑运行命令 命令介绍 操作系统中有很多运行命令,可以通过运行这些命令来完成一些特定的操作,例如打开文件、关闭程序、打开系统设置等。下面介绍一些常用的命令: msconfig:打开系统配置工具,可以配置开机启动项、服务、启动和系统等信息。 ipconfig:查看本机IP地址、DNS信息等网络连接信息。…

    other 2023年6月26日
    00
  • 一文秒懂JavaScript构造函数、实例、原型对象以及原型链

    JavaScript构造函数、实例、原型对象以及原型链 在JavaScript中,每个对象都有一个原型对象(prototype),也可以称之为“原型”。原型是一个对象,其中包含该对象的属性和方法,并且可以由其相关的对象实例所继承。下面我们来详细讲解JavaScript的构造函数、实例、原型对象以及原型链。 构造函数 构造函数是用来创建对象的函数。JavaSc…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部