美文网首页
同级传值

同级传值

作者: 大宝贝_4c6e | 来源:发表于2018-09-23 19:24 被阅读0次

1、什么是同级传值?

同级传值又叫非父子传值,第三方量:var = new Vue();使用$on()事件监听。

例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <div class="app">
            <child></child>
            <son></son>
        </div>
        <script src="js/vue.js"></script>
        <script>
            var bus = new Vue();
            Vue.component("child",{
                template:`
                  <div>
                    <h1>我是child组件</h1>
                    <button @click="sendMsg">传递数据给son</button>
                  </div>
                `,
                data:function(){
                    return{
                        msg:"hello vue!"
                    }
                },
                methods:{
                    sendMsg:function(){
                        bus.$emit("send",this.msg)
                    }
                }
            })
            Vue.component("son",{
                template:`
                  <div>
                     <h1>我是son组件</h1>
                     <a href="">{{mess}}</a>
                  </div>
                `,
                data:function(){
                    return{
                        mess:""
                    }
                },
                mounted:function(){
                    bus.$on("send",msg=>{
                        this.mess=msg
                    })
                }
            })
            new Vue({
                el:".app"
            })
        </script>
    </body>
</html>

运行结果:
image.png

2、子级传父级练习:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            ul{
                list-style: none;
            }
        </style>
    </head>
    <body>
        <div class="app">
            <my-father></my-father>
        </div>
        <script src="js/vue.js"></script>
        <script>
            Vue.component("my-father",{
                template:`
                  <div>
                    <ul>
                      <li v-for="value in arr">{{value}}</li>
                    </ul>
                    <user @send="rcvMsg" userName="Jack"></user>
                     <user @send="rcvMsg" userName="Lucy"></user>
                  </div>
                `,
                data:function(){
                    return{
                        arr:[]
                    }
                },
                methods:{
                    rcvMsg:function(txt){
                        this.arr.push(txt)
                    }
                }
            })
            Vue.component("user",{
                props:["userName"],
                template:`
                   <div>
                     <label>{{userName}}</label>
                     <input type="text" v-model="inputVal">
                     <button @click="sendMsg">发送</button>
                   </div>
                `,
                data:function(){
                    return{
                        inputVal:""
                    }
                },
                methods:{
                    sendMsg:function(){
                        this.$emit("send",this.userName+":"+this.inputVal)
                    }
                }
            })
            new Vue({
               el:".app"
            })
        </script>
    </body>
</html>

运行结果为:
13997532-15f8f2b3cfe63221.png

相关文章

网友评论

      本文标题:同级传值

      本文链接:https://www.haomeiwen.com/subject/fesqoftx.html