美文网首页
1-3 vue组件-父子组件通信

1-3 vue组件-父子组件通信

作者: 绣依锐 | 来源:发表于2018-08-27 20:50 被阅读0次

    代码链接:https://github.com/yuanxiaorui/vue-study/blob/master/guide/vue%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A101-%E7%88%B6%E5%AD%90%E7%BB%84%E4%BB%B6.html

    1、 父组件向子组件通信

    props -> 如果我们想使父组件的数据,则必须先在子组件中定义props属性

    注意:在子组件中定义prop时,使用了camelCase命名法。由于HTML特性不区分大小写,camelCase的prop用于特性时,需要转为 kebab-case(短横线隔开)。例如,在prop中定义的myName,在用作特性时需要转换为my-name。

     var Child = {
         template:'<div>{{myName}}</div>', 
         props:{ 
            myName:{type: String } 
         } 
     }
    
     var app = new Vue({ 
         el: '#app', 
         components: { 
             Child 
         }, 
         data: {
             msg: '我是父组件的msg' 
         } 
     })
     <div id="app">
         // 将父组件数据通过已定义好的props属性传递给子组件 
         <Child :my-name="msg"></Child>
    </div>
    

    使用$children可以在父组件中访问子组件实例

     //父组件中
     mounted() { console.log(this.$children)}
    

    2、子组件向父组件通信

    父组件向子组件传递事件方法,子组件通过$emit触发事件,回调给父组件。

     var Child = {
         template: '<div><button @click="clickEvent"></button></div>',
         data() {
             return { 
                 childMessage:'我是来自子组件的message' 
             } 
         },
         methods: {
             clickEvent() {
                 this.$emit('getchildmsg',this.childMessage)
             }
          } 
     }
     var vm = new Vue({ 
         el:'#app', 
         components:{ Child },
         methods: {
             getChildMsgFun(msg) {
                 console.log('msg:',msg) //我是来自子组件的message 
             }
         }
     })
    <child v-on:getchildmsg="getChildMsgFun"></child>
    

    方法二:使用$parent可以从一个子组件访问父组件的实例。

    //子组件中:
    mounted() {  console.log(this.$parent) }
    

    相关文章

      网友评论

          本文标题:1-3 vue组件-父子组件通信

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