vue中通过v-model给自定义组件绑定属性

父组件内部具体写法:

<template>
  <div class="ex">
    <!-- 通过v-model给子组件绑定属性 -->
    <ex-child v-model="parentVal"></ex-child>
    <div>{{parentVal}}</div>
  </div>
</template>

<script>
import exChild from "../components/exChild.vue"
export default {
  components: {
    exChild
  },
  name: 'Ex',
  data() {
    return {
      parentVal: 1,
    }
  },
  created() {
  },
  methods: {
    
  },
}
</script>

子组件内部写法:

<template>
  <div class="parent">
    <button @click="clickBtn">改变值{{fromParent}}</button>
  </div>
</template>

<script>
export default {
  // 如果不使用model对象重新配置的话props接收到的参数要写成value,如下:
  // props: {
  //   value: {
  //     type: Number,
  //   }
  // },
  model: {
    prop: "childVal",
    event: "changeParentVal"
  },
  props: {
    childVal: {
      type: Number,
    }
  },
  data() {
    return {
      fromParent:0
    }
  },
  created() {
    // 子组件内重新定义属性,初始化时接收从父组件传递过来的值
    this.fromParent=this.childVal;
  },
  methods:{
    // 对子组件内部接收到的值进行修改,通过$emit触发事件,改变父组件内的原始值
    clickBtn(){
      this.fromParent++;
      this.$emit("changeParentVal",this.fromParent)
    }
  }
}
</script>

以上就是vue中通过v-model给子组件传值的大致写法,通过这种方式可以实现父子组件之间的双向数据绑定;

posted @ 2023-02-02 14:30  Alex-Song  阅读(627)  评论(0编辑  收藏  举报