非父子传值

对话效果:


QQ图片20180921145138.png

代码如下:

  <div id='app'>
   <chat-rom></chat-rom>
  </div>
<script src="js/vue.js"></script>
<script>
    Vue.component('chat-rom',{
        template:`
            <div>
                <ul>
                    <li v-for='(value,index) in chatcont'>{{value}}</li>
                </ul>
                <user @send='rcvMsg' userName='jack'></user>
                <user @send='rcvMsg' userName='rose'></user>
            </div>
        `,
        data:function(){
            return{
                chatcont:[],
            }
        },
        methods:{
            rcvMsg:function(txt){
                this.chatcont.push(txt)
            }
        }
    })
    Vue.component('user',{
        props:['userName'],
        template:`
            <div>
                <label>{{userName}}</label>
                <input type='text' v-model='msg'>
                <button @click='sendMsg'>发送</button>
            </div>
        `,
        data:function(){
            return{
                msg:''
            }
        },
        methods:{
            sendMsg:function(){
                this.$emit('send',this.userName+':'+this.msg)
            }
        }
    })
    new Vue({
        el:'#app'
    })
</script>

效果图:


QQ图片20180921145331.png

代码如下:

    <div id='app'>
   <child></child>
   <son></son>
    </div>
<script src="js/vue.js"></script>
<script>
    var bus=new Vue()
    Vue.component('child',{
        template:`
            <div>
                <h1>这是组件1</h1>
                <button @click='add'>点击按钮传值</button>
            </div>
        `,
        data:function(){
            return{
                msg:'非父子组件传值'
            }
        },
        methods:{
            add:function(){
                bus.$emit('send',this.msg)
            }
        }
    })
    Vue.component('son',{
        template:`
            <div>
                <h1>这是组件2</h1>
                <a href='#'>{{mess}}</a>
            </div>
        `,
        data:function(){
            return{
                mess:''
            }
        },
        mounted:function(){
            bus.$on('send',msg=>{
                this.mess=msg;
            })
        }
    })
    new Vue({
        el:'#app'
    })
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容