VUE组件封装_vue组件内部双向绑定

VUE组件封装_vue组件内部双向绑定官方:一个组件上的v-model默认会利用名为value的prop和名为input的事件。v-model实际上只是一个语法糖:<inputv-model=”password”>作用与以下相似:<inputtype=”text”:value=”password”@input=”password=$event.target.value”>也就是通过v-model传递的值,最终是传递给了子组件props中value属性,子组件修改valu

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

官方:一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件。

v-model实际上只是一个语法糖:

<input v-model=”password”>

作用与以下相似:

<input type=”text” :value=”password” @input=”password=$event.target.value”>

也就是通过v-model传递的值,最终是传递给了子组件props中value属性,子组件修改value值需要通过触发input事件并传递需要修改的值给父组件。

简单的效果:

VUE组件封装_vue组件内部双向绑定

父组件Home.vue:

<template>
    <div class="home">
        <button @click="isShow=true">修改</button>
        <child v-model="isShow" title="修改昵称"></child>
    </div>
</template>

<script>
    import child from '@/components/child.vue'
    export default {
        name: 'Home',
        components: {
            child
        },
        data() {
            return {
                isShow:true
            };
        },
        methods: {

        },
        mounted() {

        },
    }
</script>
<style lang="scss" scoped>
.home{
    position: absolute;
    width:100%;
    height:100%;
    display: flex;
    justify-content: center;
    align-items: center;
}
</style>

子组件Child.vue:

<template>
    <div>
        <div class="fullbg" v-if="value" @click="cannelPop()">
            <div class="fulltop" :class="{'bottom':type=='bottom','top':type!='bottom'}" @click.stop="">
                <div class="title" v-if="title">{
  
  {title}}</div>
                <slot></slot>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    name: 'child',
    components: {  },
    props:{
        //控制显示与隐藏
        value:{
            type:Boolean,
            default:false
        },
        //弹窗类型,两种:上和下
        type:{
            type:String,
            default:"top"
        },
        //弹窗标题,如果不给标题,那么也不会显示标题行
        title:{
            type:String,
            default:""
        }
    },
    data() {
        return {
        };
    },
    mounted() {
        
    },
    methods: {
        //点击黑色遮罩区域隐藏弹窗
        cannelPop(){
            this.$emit('input',false);    //通过触发input去修改v-model的值
        }
    },
};
</script>

<style lang="scss" scoped>
.fullbg{
	position: fixed;
	z-index: 1000;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	background: rgba(0,0,0,0.5);
}
.fulltop {
    position: fixed;
    z-index: 1001;
    left: 0;
    right: 0;
    margin: 0 auto;
    box-sizing: border-box;
    padding: 20px 10px 20px;
    background: #FFFFFF;
    max-height: 80vh;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}
.top{
	top:0;
}
.bottom{
	bottom:0;
}
.title{
    font-size: 16px;
    font-weight: bold;
    text-align: center;
}
</style>

说明:
(默认状态下是model:{prop:’value’,event:’change’})

默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event,但是一些输入类型比如单选框和复选框按钮可能想使用 value prop 来达到不同的目的。使用 model 选项可以回避这些情况产生的冲突。

如果想修改v-model绑定子组件的props属性值,那么可以修改子组件model中的prop为需要设置的props中的某个值。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190400.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月21日 下午4:22
下一篇 2026年2月21日 下午5:01


相关推荐

  • oracle数据库recover和restore的区别

    oracle数据库recover和restore的区别

    2021年9月1日
    112
  • 微型计算机的性能主要取决于多选,广东计算机一级考试试题

    微型计算机的性能主要取决于多选,广东计算机一级考试试题广东计算机一级考试试题53、在word的哪种视图方式下,可以显示分页效果()A、普通B、大纲C、页面*D、主控文档54、在word的编辑状态,连续进行了两次”插入”操作,当单击一次”撤消”按钮后()A、将两次插入的内容全部取消B、将第一次插入的内容全部取消C、将第二次插入的内容全部取消*D、两次插入的内容都不被取消55、在WINDOW95中,若在某一文档中连续进行了多次剪切操作,当关…

    2022年6月28日
    27
  • linux 命令行移动文件

    linux 命令行移动文件在当前文件夹下打开命令行 输入 cp 文件名路径验证已经移动过去 cd 路径 lltip 写文件名时可以先写开头几个字母 然后使用 ctrl tab 补充完整文件名

    2025年11月17日
    4
  • python中for循环语句例子_for循环语句格式

    python中for循环语句例子_for循环语句格式有时候我们在使用python进行编程的时候,想使用for语句,下面来介绍一下for语句的使用方法工具/原料pythonfor语句的使用方法和实例方法/步骤1第一步我们首先需要知道python中for语句主要用于迭代遍历字符串,列表,元组等,首先输入“foriin”abcdefg”:print(i)”遍历字符串,如下图所示:2第二步运行py文件之后,可以看到将字符串abcdefg中的元素全部遍…

    2022年8月12日
    7
  • MASQUERADE

    MASQUERADELinux两张网卡:eth0和eth1sudoiptables-tnat-APOSTROUTING-oeth0-jMASQUERADEMASQUERADE(IP地址伪装)sudoiptables-tnat-APOSTROUTING-s10.0.0.0/24-oeno1-jMASQUERADE以下防…

    2022年6月30日
    38
  • Android 开机动画源码分析

    Android 开机动画源码分析Android系统在启动SystemServer进程时,通过两个阶段来启动系统所有服务,在第一阶段启动本地服务,如SurfaceFlinger,SensorService等,在第二阶段则启动一系列的Java服务。开机动画是在什么时候启动的呢?通过查看源码,Android开机动画是在启动SurfaceFlinger服务时启动的。SystemServer的main函数首先调用init1来启动本地服务,

    2022年5月15日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号