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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 移动机器人路径规划:人工势场法[通俗易懂]

    移动机器人路径规划:人工势场法[通俗易懂]人工势场法是一种原理比较简单的移动机器人路径规划算法,它将目标点位置视做势能最低点,将地图中的障碍物视为势能高点,计算整个已知地图的势场图,然后理想情况下,机器人就像一个滚落的小球,自动避开各个障碍物滚向目标点。

    2022年6月16日
    21
  • 搭建Eurake服务「建议收藏」

    搭建Eurake服务「建议收藏」Eureka注册中心Eureka的作用消费者该如何获取服务提供者具体信息?服务提供者启动时向eureka注册自己的信息eureka保存这些信息消费者根据服务名称向eureka拉取提供者信息如果有多个服务提供者,消费者该如何选择?服务消费者利用负载均衡算法,从服务列表中挑选一个消费者如何感知服务提供者健康状态?服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状eureka会更新记录服务列表信息,心跳不正常会被剔除消费者就可以拉取到最新的信息

    2022年6月1日
    35
  • Android 浏览器分享到APP「建议收藏」

    Android 浏览器分享到APP「建议收藏」1.在配置文件添加权限&lt;uses-permissionandroid:name="com.android.launcher.permission.INSTALL_SHORTCUT"/&gt;2.在配置文件中给分享到APP的界面(Acticiy)添加intent-filter&lt;intent-filter&gt;&lt;actionandroid:name="android…

    2022年5月14日
    40
  • stemwin实战篇_赖世雄入门篇

    stemwin实战篇_赖世雄入门篇特别说明:原创教程,未经许可禁止转载,教程采用回复可见的形式,谢谢大家的支持。armfly-x2,x3,v2,v3,v5开发板裸机和带系统的emWin工程已经全部建立,链接如下:http://bbs.

    2022年8月4日
    2
  • LINQ to Object

    LINQ to Object

    2021年12月13日
    34
  • resnet50 pytorch_resnet34结构

    resnet50 pytorch_resnet34结构ResNet18、ResNet20、ResNet34、ResNet50网络结构与实现

    2022年10月5日
    0

发表回复

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

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