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


相关推荐

  • 科大讯飞iFLYTEK翻译机4.0星火版超值优惠

    科大讯飞iFLYTEK翻译机4.0星火版超值优惠

    2026年3月14日
    1
  • SQL盲注注入——布尔型

    SQL盲注注入——布尔型盲注是注入的一种 指的是在不知道数据库返回值的情况下对数据中的内容进行猜测 实施 SQL 注入 盲注一般分为布尔盲注和基于时间的盲注和报错的盲注 本次主要讲解的是基于布尔的盲注 Length 函数返回字符串的长度 Substr 截取字符串 Ascii 返回字符的 ascii 码 sleep n 将程序挂起一段时间 n 为 n 秒 if expr1 expr2 expr3 判断语句如果第一个语

    2026年3月19日
    2
  • mediumtext_MySQL中tinytext、text、mediumtext和longtext等各个类型详解【图】

    mediumtext_MySQL中tinytext、text、mediumtext和longtext等各个类型详解【图】MySQL中tinytext、text、mediumtext和longtext等各个类型详解【图】07-29栏目:技术TAG:mediumtextmediumtext一、字符串类型www.jhua.org类型www.jhua.org范围https://www.jhua.org说明www.jhua.orgChar(N)[binary]N=1~255个字节jhua.orgbinary:分…

    2022年5月2日
    45
  • python查微信好友是否删除自己_微信 用脚本查看是否被微信好友删除 不用群发用Python脚本查微信被哪些好友删除…「建议收藏」

    python查微信好友是否删除自己_微信 用脚本查看是否被微信好友删除 不用群发用Python脚本查微信被哪些好友删除…「建议收藏」python3为什么不加锁也数据同步不安全,在多线程下并非一定同步。网上有的是例子可以证明,自己搜个试试看就知道了。用脚本快速查看自己被多少微信好友删除找自己删除的微信好友方法:尽管,生命中无数次的回头,也终究错过很多的故事,遗憾过,后悔过,遗憾了红尘中走过却没有带走些什么东西,后悔了一路走来却还是放下了一些东西。是的!一切就好像梦一场,但是梦醒后又想,好像曾经来过!第二种简单方法:如果该好友没…

    2022年6月3日
    45
  • 计算机二级考试python考试大纲

    计算机二级考试python考试大纲全国计算机等级考试二级Python语言程序设计考试大纲(2018年版)基本要求1.掌握Python语言的基本语法规则。2.掌握不少于2个基本的Python标准库。3.掌握不少于2个Python第三方库,掌握获取并安装第三方库的方法。4.能够阅读和分析Python程序。5.熟练使用IDLE开发环境,能够将脚本程序转变为可执行程序。6.了解Python计算生态在以下方面(不限于)的主要第三方库名称:网络爬虫、数据分析、数据可视化、机器学习、Web开发等。考试内容一、Python语言基本语法元

    2022年10月19日
    3
  • 安卓zip解压软件_激活成功教程软件之“安卓压缩包zip或rar密码激活成功教程(116位数任意破)”…

    安卓zip解压软件_激活成功教程软件之“安卓压缩包zip或rar密码激活成功教程(116位数任意破)”…软件说明 这是一款激活成功教程 zip 或 rar 密码的软件 激活成功教程快速稳定 P S 本应用不支持 rar5 类型使用方法 选择一个带密码的压缩文件 选择激活成功教程方式 如有高级需求请自定义激活成功教程 后 点击 开始激活成功教程 就可以让程序自动跑密码了 激活成功教程成功后将会播放与铃声音量相同的提示音 您可以通过将手机静音以关闭铃声激活成功教程时间视密码难易情况而定 激活成功教程速度视手机配置好坏而定 如需最快速度 您可以关闭省电模式 并到开发人

    2026年3月17日
    2

发表回复

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

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