首页 > 其他 > 详细

组件传值

时间:2020-07-29 14:26:44      阅读:50      评论:0      收藏:0      [点我收藏+]
1、父子(向下)传值:通过属性
    // 1、传递的属性不能出现大写。需要用-分割。大写转为小写
    // 2、从父级接收过来的数据是不允许直接修改。
    // 3、接收过来的属性名,不允许与当前组件的数据名(data属性名)相同
<body>
<div id="root">
    <input type="button" @click="fn" :value="n">
    <one :abc="n"></one>
</div>
</body>
<script>
    new Vue({
        el:"#root",
        data:{
            n:1
        },
        components:{
            one:{
                // 通过props可以限制接收的数据。
                props:["abc"],
                template:`
                    <div>one {{abc}}</div>
                `
            }
        },
        methods:{
            fn(){
                this.n ++;
            }
        }
    })
</script>

2、子父(向上)传值:通过自定义事件
    <wrap v-show="isShow" @abcdefg="changeIsShow"></wrap>
    @click="$emit(‘abcdefg‘,false)"
3、非父子传值:通过bus.
    *发布与订阅需要在同一个实例下才能够起效果。
    $on:接收消息
    $off:取消订阅。
    $once:接收一次
    $emit:发布消息
<div id="root">
    <input type="button" @click="fn" :value="num">
    <My></My>
</div>
</body>
<script>
    // 发布者与订阅者。
    new Vue({
        el:"#root",
        data:{
            num:1
        },
        methods:{
           fn(){
               // 发布一个名字为one的消息。
               this.$emit("one",1,2,3,4);
           }
        },
        components:{
            My:{
                methods:{
                    fn(){
                        this.$emit("one",2,3,4,5);
                        console.log("我是子组件My的一个函数")
                    }
                },
                template:`
                    <div><input type="button" @click="fn"></div>
                `
            }
        },
        mounted(){
            // 声明订阅者,订阅了一个名字为one的消息
            this.$on("one",(a,b,c,d)=>{
                this.$off("one");
                console.log(1111111111,a,b,c,d);
            })
   
        }
    })
</script>

 

 

ref

父组件调用子组件的数据和方法

  this.$ref.子组件的ref标识.子组件的数据或方法

子组件调用父组件的数据或方法

  this.$parent.父组件数据或方法

 

组件传值

原文:https://www.cnblogs.com/dudududadada/p/13396220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!