Vue弹窗如何通过两种实现方式(组件或指令)进行实例详解?

2026-03-31 17:531阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计526个文字,预计阅读时间需要3分钟。

Vue弹窗如何通过两种实现方式(组件或指令)进行实例详解?

目录方法一:使用.sync修饰符使用v-model指令方法一:使用.sync修饰符使用v-model指令

实现方式:父组件:

子组件:

目录
  • 方法一 使用.sync修饰符
  • 方法二 使用v-model

方法一 使用.sync修饰符

element就是使用的这种方式,实现方式如下:

父组件:

<template> <div id="demo"> <test-model :show.sync="showFlag"></test-model> </div> </template> <script> import testModel from 'src/components/testModel' export default { data(){ return{ showFlag: false } }, components: { testModel, } } </script> <style lang="scss" scoped> </style>

子组件:

<template> <div v-if="show"> <button @click="closeShow"></button> </div> </template> <script> export default { data(){ return{ } }, props: ["show"], methods: { closeShow() { this.$emit("update:show",false); } }, } </script> <style lang="scss" scoped> </style>

子组件通过this.$emit("update:show",false); 可以直接将父组件传过来的show值改变,从而达到显示隐藏的目的。

Vue弹窗如何通过两种实现方式(组件或指令)进行实例详解?

方法二 使用v-model

父组件

<template> <div id="demo"> <test-model v-model="show"></test-model> </div> </template> <script> import testModel from 'src/components/testModel' export default { data(){ return{ show: false } }, components: { testModel, } } </script> <style lang="scss" scoped> </style>

子组件

<template> <div v-if="value"> <button @click="closeShow"></button> </div> </template> <script> export default { data(){ return{ } }, props: ["value"], model: { prop: 'value', event: 'balabala' }, methods: { changeShow() { this.$emit("balabala",false); } }, } </script> <style lang="scss" scoped> </style>

官方文档里有写,一个组件上的v-model默认会利用名为value的 prop 和名为input的事件,但是像单选框、复选框等类型的输入控件可能会将value特性用于不同的目的。model选项可以用来避免这样的冲突,所以上面的子组件里,我们用balabala来替换掉了原本的input事件,所以在$emit的时候,里面的事件名应为balabala,否则默认为input.

到此这篇关于Vue弹窗的两种实现方式的文章就介绍到这了,更多相关vue弹窗实现内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

本文共计526个文字,预计阅读时间需要3分钟。

Vue弹窗如何通过两种实现方式(组件或指令)进行实例详解?

目录方法一:使用.sync修饰符使用v-model指令方法一:使用.sync修饰符使用v-model指令

实现方式:父组件:

子组件:

目录
  • 方法一 使用.sync修饰符
  • 方法二 使用v-model

方法一 使用.sync修饰符

element就是使用的这种方式,实现方式如下:

父组件:

<template> <div id="demo"> <test-model :show.sync="showFlag"></test-model> </div> </template> <script> import testModel from 'src/components/testModel' export default { data(){ return{ showFlag: false } }, components: { testModel, } } </script> <style lang="scss" scoped> </style>

子组件:

<template> <div v-if="show"> <button @click="closeShow"></button> </div> </template> <script> export default { data(){ return{ } }, props: ["show"], methods: { closeShow() { this.$emit("update:show",false); } }, } </script> <style lang="scss" scoped> </style>

子组件通过this.$emit("update:show",false); 可以直接将父组件传过来的show值改变,从而达到显示隐藏的目的。

Vue弹窗如何通过两种实现方式(组件或指令)进行实例详解?

方法二 使用v-model

父组件

<template> <div id="demo"> <test-model v-model="show"></test-model> </div> </template> <script> import testModel from 'src/components/testModel' export default { data(){ return{ show: false } }, components: { testModel, } } </script> <style lang="scss" scoped> </style>

子组件

<template> <div v-if="value"> <button @click="closeShow"></button> </div> </template> <script> export default { data(){ return{ } }, props: ["value"], model: { prop: 'value', event: 'balabala' }, methods: { changeShow() { this.$emit("balabala",false); } }, } </script> <style lang="scss" scoped> </style>

官方文档里有写,一个组件上的v-model默认会利用名为value的 prop 和名为input的事件,但是像单选框、复选框等类型的输入控件可能会将value特性用于不同的目的。model选项可以用来避免这样的冲突,所以上面的子组件里,我们用balabala来替换掉了原本的input事件,所以在$emit的时候,里面的事件名应为balabala,否则默认为input.

到此这篇关于Vue弹窗的两种实现方式的文章就介绍到这了,更多相关vue弹窗实现内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!