美文网首页
vue 子传父 与 父传子 与 子传子

vue 子传父 与 父传子 与 子传子

作者: 不会写代码的机器人 | 来源:发表于2019-07-31 11:44 被阅读0次

子传父

子组件:

methods: {
// childByValue是在父组件on监听的方法
// 第二个参数this.childValue是需要传的值
emitFun(){ //子组件html触发函数(函数名字随便起)
  this.$emit('childByValue', this.childValue)
  }
}

父组件

//html引入子组件 定义一个on的方法监听子组件的状态
 <child v-on:childByValue="childByValueData"></child>

  methods: {
      childByValueData: function (data) {
       // data就是子组件传过来的值
      this.name = data
   }

父传子

父组件

<template>
  <div>
    父组件:
    <input type="text" v-model="name">
    <br>
    <br>
    <!-- 引入子组件 -->
    <child :inputName="name"></child> //将数据绑定传向子组件,inputName是子组件接收的参数名
  </div>
</template>
<script>
  import child from './child'
  export default {
    components: {
      child
    },
    data () {
      return {
        name: '我是父组件传给子组件的数据'
      }
    }
  }
</script>

子组件

  <template>
  <div>
    子组件:
    <span>{{inputName}}</span>   //显示   我是父组件传给子组件的数据
  </div>
</template>
<script>
  export default {
    // 接受父组件的值
    props: {
      inputName: String; //父组件传来的值,首先需要给传来的值定义类型。
    }
  }
</script>

子传子 (也可以用vuex)

新创建一个js bus.js

import Vue from 'vue'  //‘vue’小写的

export default new Vue;

两个子组件都要引入js。例如组件A传值给组件B

a.vue

//a.vue
<script>
import Bus from './Bus.js';
export default {
  name: 'a',
  components: {
  },
  methods: {
      sendMsg(){ //html调用此方法
          Bus.$emit('send','home数据');//emit 调用一个send 方法 ,发射一个数据
      }
  },
}
</script>

b.vue

<script>
import Bus from './Bus.js';
export default {
  name: 'b',
  data() {
    return {
      msg: '原始数据'
    }
  },
  components: {

  },
  created() {
     Bus.$on('send', (value) => {  //接收绑定的事件  value是a页面传来的值
        this.msg = value;
      })
  },
  methods: {
    
  },
}
</script>

相关文章

网友评论

      本文标题:vue 子传父 与 父传子 与 子传子

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