vue组件通信

1.组建通讯---父子组件通讯

父子通信通过props属性进行传值

父组件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <div id="app">
            <alert msg="这是一个弹框"></alert> //调用子组件alert,并传值
        </div>
        
        <script src="lib/vue.js"></script>
        <script src="js/main.js"></script>
    </body>
</html>

子组件

Vue.component('alert',{
    template:'<button @click="onclick()">弹弹</button>',
    props:['msg'], //接收父组件传值
    methods:{
        onclick:function(){
            alert(this.msg);
        }
    }

})

var app=new Vue({
    el:"#app"
})
1.组建通讯---子父组件通讯

子组件对上级组件的喊话,案例显示余额系统,子组件是一个显示余额的按钮,当点击这个按钮,子组件和上级组件进行通信,告诉父组件要显示余额。

//父组件
Vue.component('balance',{
    template:'<div><show @show-balance="showbalance"></show><div v-if="show">你的余貳:98</div></div>',
    methods:{
        showbalance:function(data){
            this.show=!this.show;
            console.log(data.a)
        }
    },
    data:function(){
        return{
            show:false
        }
    }

})



//子组件
Vue.component('show',{
    template:'<button @click="onclick()">显示余额</button>',

    methods:{
        onclick:function(){
            this.$emit('show-balance',{a:1,b:2})//触发一个事件
        }
    }

})



var app=new Vue({
    el:"#app"
})

1.组建通讯---任意及平行组件之间的通讯
//主页面
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <div id="app">
            <!--平行组件之间通讯-->
            <huahua></huahua>
            <shuandan></shuandan>
            
        </div>
        
        <script src="lib/vue.js"></script>
        <script src="js/main.js"></script>
    </body>
</html>


//组件页面

var Event=new Vue();//定义一个事件调度器

//组件一
Vue.component('huahua',{
    template:'<div>我说:<input @keyup="on_change" v-model="i_said">{{i_said}}</div>',
    data:function(){
        return{
            i_said:""
        }
    },
    methods:{
            on_change:function(){
                Event.$emit('huahua_said_some',this.i_said)//第一个参数触发事件的名字,第二个参数传的数据
            }
        
    }
    

})



//组件二

Vue.component('shuandan',{
    template:'<div>huahua说:{{huahua_said}}</div>',

    data:function(){
        return {
            huahua_said:""
        }
    },
    
    methods:{
    
    },
    mounted:function(){
        var vm=this;//事先声明域
        Event.$on('huahua_said_some',function(data){
            vm.huahua_said=data;//这里的this指的是Event的域,记住要事先声明
        });
    }

});



var app=new Vue({
    el:"#app"
})

截图

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 组件通信各种情况总结VUE是以数据驱动的MVVM框架,又是模块化开发,所以各个组件间的通信传递数据非常重要,在项目...
    流年_338f阅读 593评论 0 2
  • vue 组件通信分为父组件与子组件通信、子组件与父组件通信、非父子关系组件通信三种 第一种大家都知道用props,...
    lyn911阅读 2,227评论 0 0
  • 1) 父组件给子组件传值 利用Vue的组件机制,父亲组件通过 v-bind指令给子组件绑定一个属性,属性值为父组件...
    小枫学幽默阅读 566评论 1 7
  • 1.父组件传递数据给子组件 思路:在父组件中定义inputValue属性,然后再props接收参数注意此方法是传递...
    黄鹤你不是人阅读 313评论 0 0
  • 《天生就会跑》里比较推崇的一种理念,反对装备党。在跑步运动时,运用身体本身的肌肉,骨骼。书里说到,人本来就会奔跑,...
    艾亚卡阅读 208评论 0 0