美文网首页
vue页面和component组件之间双向通讯

vue页面和component组件之间双向通讯

作者: 工程师54 | 来源:发表于2020-11-24 21:40 被阅读0次

         应用场景:entity.vue以组件方式嵌入在main.vue中,要求1、main.vue页面中能够将参数传递给组件entity.vue中;2、组件entity.vue能够随时回写数据到main.vue中。

一、main.vue代码

<template>

  <entity :m_parameter1="m_parameter1" :m_parameter2="m_parameter2"  v-bind:m_parameter3="m_parameter3" v-on:parameter3changed="m_parameter3 = $event"  />

</template>

<script>

import entity from "@/pages/common/entity";

export default {

  name: "product_edit",

  components: {

    entity

  },

  data() {

    return {

      m_parameter1: '',

      m_parameter2: '',

      m_parameter3: ''

    }

  },

  computed: {},

  methods: {},

  mounted() {},

  watch:{

    m_parameter3(val){

      console.log('组件回传的值:' + this.m_parameter3);

    }

  }

};

</script>

<style scoped>

</style>

二、entity.vue代码

<template>

    <q-btn  @click="returnvalue" label="回传参数" />

</template>

<script>

import entity from "@/pages/common/entity";

export default {

  name: "B",

  props: {

    m_parameter1: {

      type: String,

      defult: "10000"

    },

    m_parameter2: {

      type: String,

      defult: ""

    },

  },

  data() {

    return {}

  },

  computed: {},

  methods: {

      init(){

          console.log('传来的第一个参数:' + this.m_parameter1);

          console.log('传来的第二个参数:' + this.m_parameter2);

      },

      returnvalue() {

          //选中操作

            this.$emit('parameter3changed', '来自组件的数据');

      }

  },

  mounted() {}

};

</script>

<style scoped>

</style>

三、代码说明

1、main.vue中定义了三个参数:m_parameter1、m_parameter2、m_parameter3,其中m_parameter1、m_parameter2为main.vue传递给entity.vue的两个参数;m_parameter3为entity.vue要传递给main.vue的参数。

2、entity.vue接受传递过来的参数方法是定义好props后,当做正常参数(this.m_parameter1)直接使用即可。

3、entity.vue要回写数据给main.vue的方法,通过this.$emit触发main.vue中定义的方法(如本示例中的parameter3changed)。

4、main.vue通过watch监控变量m_parameter3,一旦有变化就会触发相应的处理逻辑。

相关文章

网友评论

      本文标题:vue页面和component组件之间双向通讯

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