前端工作总结149-封装一个带有对话框的button组件

简介: 前端工作总结149-封装一个带有对话框的button组件
<!--定义一个有按钮的对话框 相当于dialog和按钮组合使用-->
<template>
  <!-- 有按钮的对话框 这个位置的代码会被包裹过去-->
  <!--close-on-click-modal 是否可以通过点击 modal 关闭 Dialog append-to-body控制不能出现遮挡层-->
  <el-dialog
      :title="title"
      :show-close="ShowClose"
    :fullscreen="fullscreen"
    :close-on-click-modal="closeOnClickModal"
    :visible.sync="visible"
    :width="width"
    :destroy-on-close="destroyOnClose"
    @close="close"
      append-to-body
  >
    <!--向别的位置包裹代码 上面的代码会被包裹过去-->
    <slot />
    <!--定义所在插槽的按钮-->
    <div slot="footer">
      <template v-if="buttonList">
        <el-button
          v-for="(button, index) in buttonList"
          :key="index"
          :type="button.type"
          :icon="button.icon"
          @click="button.onClick"
        >
          {{ button.text }}
        </el-button>
      </template>
      <!--定义其中的确定取消按钮-->
      <template v-else>
       <!-- <el-button @click="cancel">{{ cancelButtonText }}</el-button>-->
        <el-button type="primary" @click="ok" :disabled="disabled">{{ okButtonText }}</el-button>
      </template>
    </div>
  </el-dialog>
</template>
<script>
export default {
  name: "ButtonDialog",
  /*通过父子组件传值可以通过父子组件传值*/
  props: {
    /*定义一个标题*/
    title: { type: String, required: false }, // 标题
    /*是否为全屏显示*/
    fullscreen: { type: Boolean, default: false, required: false }, // 是否为全屏显示
    /*是否可以通过model关闭*/
    closeOnClickModal: { type: Boolean, default: true, required: false }, // 见 element ui 参数
    /*确定按钮显示文字*/
    okButtonText: { type: String, default: "确 定", required: false }, // 确定按钮显示文字
    /*取消按钮显示文字*/
    /*cancelButtonText: { type: String, default: "取 消", required: false }, // 取消按钮显示文字*/
    /*显示按钮显示文字*/
    buttonList: { type: Array, required: false }, // 显示按钮列表;如果设置了该参数,默认的按钮会被覆盖
    /*设置宽度*/
    width: { type: String, required: false, default: "50%" }, // 宽度
    /*关闭时候销毁dialog里的元素*/
    destroyOnClose: { type: Boolean, default: false, required: false }, // 见 element ui 参数
    /*控制按钮禁用*/
    disabled:{type:Boolean},
    /*控制是否有关闭按钮*/
    ShowClose:{type:Boolean,default:false}
  },
  data() {
    return {
      visible: false,
    };
  },
  methods: {
    /*控制dialog的显示*/
    show() {
      this.visible = true;
    },
    /*控制dialog的关闭*/
    close() {
      this.visible = false;
      this.$emit("close");
    },
    /*控制dialog的调用父组件的方法*/
    ok() {
      this.$emit("ok");
    },
    /*控制组件调用父级的方法*/
    cancel() {
      this.$emit("cancel");
      this.close();
    }
  }
};
</script>
<style scoped></style>
相关文章
|
19天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
27 1
|
22天前
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
|
30天前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
149 1
|
1月前
|
前端开发 JavaScript 开发者
Web组件:一种新的前端开发范式
【10月更文挑战第9天】Web组件:一种新的前端开发范式
38 2
|
1月前
|
前端开发 JavaScript Go
前端开发趋势:从响应式设计到Web组件的探索
【10月更文挑战第1天】前端开发趋势:从响应式设计到Web组件的探索
38 3
|
2月前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
3月前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
151 0
|
30天前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
127 2
|
30天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
37 0
|
30天前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。