Vue3 el-dialog 二次封装踩坑实录(v-model moduleValue 不触发)

这篇具有很好参考价值的文章主要介绍了Vue3 el-dialog 二次封装踩坑实录(v-model moduleValue 不触发)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果你封装了一个el-dialog的子组件,想通过父组件v-model的形式调用,切记不能使用v-model,要使用 v-model:[你的参数],例如 v-model:visible文章来源地址https://www.toymoban.com/news/detail-859943.html

<template>
  <el-dialog
    v-model="dialogVisibale"
    :title="title"
    width="800px"
  >
    <el-card class="mb-5 mt-2">
      测试效果
    </el-card>
    <template #footer>
      <div class="dialog-footer">
        <el-button type="primary" @click="handleConfirm">
          确定
        </el-button>
      </div>
    </template>
  </el-dialog>
</template>

<script setup>
import { ref, computed } from "vue"
const emits = defineEmits(['update:visible', 'listUpdate'])

const props = defineProps({
  title: {
    type: String,
    default: '标题'
  },
  visible: {
    type: Boolean,
    default: false
  },
})
const dialogVisibale = computed({
  get() {
    return props.visible
  },
  set(val) {
    emits('update:visible', val)
  }
})

const handleConfirm = () => {
  dialogVisibale.value = false
  emits('listUpdate')
}

// 取消
const handleClose = (done) => {
  dialogVisibale.value = false
}

</script>

<style scoped lang="less">

</style>
// 父组件
<template>
	<el-button @click="handleAdd">打开dialog</el-button>
    <staffing-dialog v-model:visible="dialogVisibale" @listUpdate="onSearch"/>
</template>

<script setup>
import staffingDialog from "./staffingDialog.vue";

const dialogVisibale = ref(false);

const handleAdd = () => {
  dialogVisibale.value = true;
}

const onSearch() => {
	// 弹窗保存需要处理的逻辑
}

到了这里,关于Vue3 el-dialog 二次封装踩坑实录(v-model moduleValue 不触发)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3 element-plus el-form的二次封装

    form表单的二次封装 vue3 element-plus el-form的二次封装 属性名 类型 默认值 说明 data Array [] 页面展示数据内容 onChange Function false 表单事件 bindProps Object {} 表单属性 formRef Object {} 表单ref ruleForm Object {} 数据

    2024年02月13日
    浏览(49)
  • vue3 基于element plus对el-pagination进行二次封装

    在vue3项目中,如果每个列表页都敲一遍分页方法,显然是不合理的,那么,下面我将基于element plus对el-pagination进行二次封装,使用vue3语法糖格式,废话不多说,开干。

    2024年02月12日
    浏览(34)
  • 流畅交互体验:实现Vue中el-dialog拖动效果的完美指南

            在使用elementUI中的Dialog组件时,总有无理的产品提需求,在右上角增加可点击全屏的功能、给我实现弹出框可任意拖拽的功能......这种情况下,组件就不能很好的使用了,那么,只能由我们前端攻城狮进行代码攻克了,接下来就实现其中的可拖拽功能        

    2024年02月12日
    浏览(27)
  • vue/Element UI 实现Element UI el-dialog 自由拖动

    前言: 最近有个项目,客户要求弹窗可拖动,但是由于elemen ui本身的弹窗并没有拖动的属性,无法满足客户的需求。 于是我百度找到了几篇文章,终于可以实现客户的需求! 请往下看↓↓ 一、新建一个目录:utils 二、创建drag .js文件 三、创建directive.js 文件 四、main.js文件中

    2024年02月02日
    浏览(38)
  • Vue | Element UI Plus 完美解决el-dialog双滚动条、页面抖动问题

    解决因为滚动条隐藏导致的窗口抖动问题: (添加 :lock-scroll=\\\"false\\\" 属性)(无效的话把冒号去掉试试) 解决双滚动条问题: (无效的话去掉deep) 参考: http://t.csdnimg.cn/xavOG

    2024年04月25日
    浏览(54)
  • vue中使用el-dialog设置弹窗对话框在前端显示为居中

    废话不多直接上图

    2024年02月01日
    浏览(36)
  • el-dialog的内容不刷新;el-dialog内容有缓存;el-dialog里面的组件不刷新问题;

    el-dialog里面的内容是带缓存的,也就是说除了第一次打开会初始化,其他次打开都是直接加载缓存的; 这就导致了有时候打开弹框时候,内容不刷新。 有说法说是el-dialog嵌套太深大致的。 解决方法:直接给弹框的内容部分添加v-if

    2024年02月14日
    浏览(25)
  • Vue项目element-ui弹窗组件el-dialog、el-drawer,阻止点击遮罩层关闭

    效果图: 我们只需要设置这两个 属性 append-to-body :close-on-click-modal=“false” 注意 : 这里的close-on-click-modal属性前需要写入 :

    2024年02月12日
    浏览(46)
  • Vue中使用element-ui el-dialog弹窗最大化还原,拖拽,动态改变大小

    创建对应的js文件   先在指定稳定文件创建js文件,如src下创建diaLog.js文件,部分会提示红色爆红,可以不予理会,可以根据需求修改,如:弹框可拉伸最小宽高。   2. 在main.js的引用   同时为了防止冲突,需要关闭closeOnClickModal(弹窗默认点击遮罩改为不关闭),并添加标签

    2024年02月11日
    浏览(35)
  • el-dialog嵌套,修改内层el-dialog样式(自定义样式)

    el-dialog嵌套使用时,内层的el-dialog要添加 append-to-body 属性 给内层的el-dialog添加 custom-class 属性,添加自定义类名 然后使用 不带scoped的style标签 ,书写格式如下: 就可以对其样式进行修改了  大功告成! -------------------------------------------------手动分割线-------------------------------------

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包