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

yizhihongxing

下面我将为你详细讲解“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日

相关文章

  • matlab中normalize函数用法

    以下是关于“Matlab中normalize函数用法”的完整攻略: normalize函数概述 normalize函数是Matlab中的一个函数,用于将向量或矩阵归一化。归一化后的向量或矩阵的范数为1。 normalize函数语法 normalize函数的语法如下: B = normalize(A) B = normalize(A,dim) B = norm…

    other 2023年5月7日
    00
  • vue创建组件的两种方法小结(必看)

    Vue.js是一种流行的JavaScript框架,用于构建交互式Web应用程序。在Vue.js中,组件是构建应用程序的基本构建块之一。本文将介绍Vue中创建组件的两种方法。 方法1:使用Vue.component()方法创建全局组件 Vue.component()方法是Vue.js中创建全局组件的一种方法。以下是使用Vue.component()方法创建组件…

    other 2023年5月9日
    00
  • 服务器重启不能启动的几种常见解决方法

    当服务器重启后不能正常启动时,可能是由于多种因素引起的,例如操作系统文件损坏、硬件失效、配置错误等。接下来,笔者将为大家介绍几种常见的解决方法。 1. 使用系统恢复模式 操作系统通常都有自带的系统恢复模式,可以修复系统文件错误。具体步骤如下: 重启服务器,在系统启动时,按下对应的快捷键(通常是F8或F12)进入启动菜单界面。 选择“安全模式”或“安全模式带网…

    other 2023年6月27日
    00
  • Python+AutoIt实现界面工具开发

    Python+AutoIt实现界面工具开发的完整攻略 Python和AutoIt是两种常用的脚本语言,可以用于实现界面工具的开发。本文将为您详细讲解Python+AutoIt实现界面工具开发的完整攻略,包括介绍、方法和两个示例说明。 介绍 Python是一种高级编程语言,具有简单易学、功能强大、可扩展性好等特点。AutoIt是一种Windows平台下的自动化…

    other 2023年5月6日
    00
  • 台式机电脑总是自动关机重启该怎么解决?

    台式机电脑总是自动关机重启该怎么解决? 问题描述 当台式机电脑出现自动关机重启的情况时,通常表现为突然关闭并自动重启。这种情况会给用户带来极大的不便,严重的甚至会导致数据丢失和硬件损坏。 解决方案 针对台式机电脑自动关机重启的情况,可以尝试以下几种解决方案: 1. 检查电源 首先检查电源供应是否正常,如果电源不足或者电源出现问题,可能会导致电脑重启。可以尝试…

    other 2023年6月26日
    00
  • webpack 样式加载的实现原理

    Webpack 样式加载的实现原理 Webpack 是一个现代化的 JavaScript 模块打包工具,它不仅可以打包 JavaScript 文件,还可以处理其他类型的资源,包括样式文件。在本文中,我们将详细讲解 Webpack 样式加载的实现原理。 1. 安装和配置 Webpack 首先,我们需要安装 Webpack。可以使用 npm 或者 yarn 进行…

    other 2023年8月20日
    00
  • DedeCms V5.6漏洞 变量未初始化 导致鸡助漏洞

    DedeCms V5.6是一款广泛使用的CMS系统,但该系统在变量未被正确初始化的情况下存在漏洞,攻击者可以通过利用该漏洞成功实施鸡助攻击。以下是攻击步骤: 攻击者首先需要获取DedeCms V5.6的登录页面,并且需要知道账号和密码才能登录系统; 然后攻击者需要构造恶意请求,通过向upload_picture.php文件中的path参数追加../路径,使得…

    other 2023年6月20日
    00
  • 关于SpringBoot配置文件application.properties的路径问题

    Spring Boot 配置文件 application.properties 是 Spring Boot 项目中的核心组件之一,它用于定义应用程序的配置选项。在 Spring Boot 应用中,我们可以使用 application.properties 文件来定制应用程序的各种配置,例如数据源的URL、端口号、邮件服务器等等。 Spring Boot 中的…

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