vue父子组件间的通信

2017-07-31  本文已影响0人  tobyDing

父子组件定义与使用:
<body>
<div id="box">
<aaa></aaa>
</div>
<script>
var vm=new Vue({
el:'#box',
data:{
a:'aaa'
},
components:{
'aaa':{
data(){
return {
msg:'我是父组件的数据'

                                 }
                             },
                             template:'<h2>我是aaa组件</h2><bbb></bbb>',
                             components:{
                                 'bbb':{
                                     template:'<h3>我是bbb组件->{{msg}}</h3>'
                                 }
                             }
                        }
                     }
                });

             </script>
         </body>
    
     组件间数据传递/通信:
        vue默认情况下,子组件也没法访问父组件数据
     (1)子组件想获取父组件data数据
         在调用子组件时候,通过属性传递数据:(注意此时属性名属于html,命名时加横线,不要大写)
             <bbb :m="数据"></bbb>

         在子组件之内,通过props获取属性中的数据: (注意此时属性名属于js,命名时采用驼峰命名法,包括模板中引用数据时也采用驼峰命名)
             a) 常见的数组写法
                 props:['m','myMsg']

             b) json写法
                 props:{
                    'm':String,
                    'myMsg':Number
                 }
                 
     (2)父级获取子级数据
         a)常用方式
             *需要子组件把自己的数据,发送到父级:
                 vm.$emit(事件名,数据);
             父级接受:
                 @事件名  通过一个带参数的函数接收数据(注意,接受的函数不能加(),会使默认参数清空)

         b)vue2.0已经废除的方式
             vm.$dispatch(事件名,数据)   子级向父级发送数据
             vm.$broadcast(事件名,数据)  父级向子级广播数据
                 配合: events:{}
上一篇下一篇

猜你喜欢

热点阅读