最近这几天用vue开发遇到这么一个事,需求是要做一个选择用户的弹出窗层,这个窗口会被多个地方调用,但返回的值需要塞到不同的地方。
通俗做法:封装一个普通的层组件,由于需要组件外层和组件内部都能控制显示和隐藏组件,所以就要实现组件之间的通信。要实现该功能第一反应是:
第一种方案:
调用弹出层的组件里引入该组件通过使用
属性和事件进行父子组件的通信,但是这样导致的后果是会在html中生成多个弹出层片段,而且生成的代码插入的位置比较深,会导致遮罩层会盖不到全部。(比较郁闷)于是想到
第二种方案:
将这个组件放到最外层(body元素下面)用vuex中的store 在state中建立一个变量来实现多组件之间的通信。这样做很好的解决了上面的问题,但是这样导致了组件里面要和store进行通信,这样就直接导致这个层组件耦合度变高了,移植起来就不方便了更没办法封装成业务组件了。于是抓耳扰腮出来了
第三种方案:
回归本真,使用ref属性并在组件内部封装显示和隐藏方法,并在调用时可传入回吊函数,提交选中记录时将选中的记录作为回吊函数的参数传出来。一下子万事大吉,既方便了移植又降低了耦合。可是我并不觉的有什么成就感,因为这种方式在mvc的架构中在平常不过了,如果在vue中使用这种方式简直就是历史的倒退。可是没办法事实证明这种方式时最能达到我的要求的。
总结:也是这就是所谓的没有最好,只有最合适吧!
分享到:
相关推荐
**Vue Thin Modal:轻量级且功能强大的前端模态组件** 在前端开发中,模态框(Modal)是一种常见的UI元素,用于展示重要的信息或进行交互操作。Vue Thin Modal是针对Vue.js框架的一个轻量级但功能丰富的模态组件。...
前端开源库-vue-slim-modalVue Slim Modal,用于Vue.js的Slim Modal组件
Vue 弹窗(Modal)是项目中常见的功能,用于提供用户操作反馈或提示信息。在本文中,我们将深入探讨如何手写一个Vue Modal组件,并通过实例代码来解析其实现过程。 首先,让我们来看一下一个简单的Vue通知组件的...
vote-modal.vue
演示: :安装npm i vue-modal-wizardimport ModalWizard from 'vue-modal-wizard'Vue . use ( ModalWizard )//use it in your vue componentthis . $modal . open ( modalComponent , opts )//orModalWizard . open...
Vue Bootstrap Modal是一个可重用的组件,您可以在需要显示简单的模式弹出窗口时在整个项目中使用。 因此,您不必每次都想使用引导程序模式时重复相同的html代码。 目录 开始吧 安装 npm install --save @...
在本项目"vue_modal:只是使用Vue创建的简单模式窗口"中,开发者利用Vue.js的灵活性和组件化特性来实现了一个简单的模态窗口功能。模态窗口是网页设计中常见的元素,它可以在不离开当前页面的情况下显示额外信息或...
使用创建Modal的Vue组件。 项目设置 npm install --save @ocrv/vue-tailwind-modal 使用模态 全局安装 在您的主要js文件中: import VueTailwindModal from "@ocrv/vue-tailwind-modal" Vue . component ( ...
Vue-Router-Modal 是一个基于 Vue.js 框架的路由管理模态解决方案。它将传统的页面跳转转换为模态对话框展示,这在某些应用场景下,如处理表单填写、查看详细信息或者轻量级的导航时,能够提供更好的用户体验。Vue-...
在Vue模板中,可以像使用其他Vue组件一样插入`vue-semantic-modal`: ```html <vue-semantic-modal :visible.sync="modalVisible" :animation="animationType"> 标题 这里是对话框的内容,可以包含文本、图片等。...
#vue3-bootstrap-5-modal-component使用引导程序5的vue 3的简单模态组件 依存关系: 该组件需要安装Bootstrap 5和Popper npm install bootstrap@next npm install @popperjs/core 然后可以将它们包含在main.js...
Vue.js 是一款轻量级的前端JavaScript框架,它以其易学易用、高效灵活的特点深受开发者喜爱。在“vue例子(实现单选、多选、弹窗等功能)”这个项目中,我们将深入探讨如何利用Vue.js来实现这些常见的UI交互功能。 ...
标题中的“基于SpringBoot,ant-design-vue-pro的简易后台管理系统”揭示了这个项目的核心技术栈,主要包括两个部分:SpringBoot后端框架和ant-design-vue-pro前端UI库。接下来,我们将深入探讨这两个关键技术以及...
vue写的confirm确认框,loading加载中,message提示消息 在vue的模板里引用 import message from './tips/message/index'; import confirm from './tips/confirm/index'; import loading from './tips/loading/index...
modal.vue
JeecgBoot—Vue2版前端源码,基于 Vue2+AntDesignVue 实现的 Ant Design Pro,提供强大代码生成器的低代码平台。 前端页面代码和后端功能代码一键生成,不需要写任何代码,保持jeecg一贯的强大。基于 Ant Design of ...
| | 介绍 承诺对话框! 对话框是用户交互的一种典型且必不可少的类型。 对话框在某种程度上类似于Promise。 对话框最终将关闭。... 然后导入并安装vue-modal-dialogs作为Vue插件: import * as ModalDialogs f
2. **Teleport**:Teleport是Vue3的一个新特性,它可以将组件的内容“传送”到文档中的任意位置,这对于处理如 modal、 toast 或表单等需要插入到特定DOM节点的场景非常有用。 3. **Suspense组件**:Vue3新增的...
vue-thin-modal提供了薄但功能强大的模式组件。 它的样式,过渡和内容是完全可定制的。 安装 $ npm install --save vue-thin-modal # or $ yarn add vue-thin-modal 用法 导入VueThinModal并将其安装在Vue构造函数...
5. **通知(Notice)**:包括消息(Message)、提示(Alert)、弹框(Modal)等,提供实时反馈和互动。 6. **其他组件**:如图标(Icon)、加载 Loading、折叠面板(Collapse)等,丰富了应用的视觉元素和交互效果。 ### 安装与...