美文网首页
vue自定义组件使用v-model

vue自定义组件使用v-model

作者: 男人宫 | 来源:发表于2023-04-11 14:46 被阅读0次

一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件
举例说明

  • 子组件
<template>
  <div>
    <input type="text" :value="value" v-on:change="changeEvent" />
  </div>
</template>

<script>
export default {
  props: {
    value: String,
  },
  methods: {
    changeEvent(e) {
      this.$emit("input", e.target.value);
    },
  },
};
</script>

<style lang="scss" scoped>
</style>
  • 父组件
<Test v-model="name" />
//v-model相当于在组件上绑定了一个名为value的属性和一个input的方法(在input方法中修改属性的值)
<Test value="小明" @input="....."></Test>
 ...
export default {
  components: {
    Test,
  },
  data() {
    return {
      name: "小明",
    };
  },

上面是最原始的v-model绑定的本质

如果想更变绑定的属性值和方法名

子组件

<template>
  <div>
    <input type="text" :value="showName" v-on:change="changeEvent" />
  </div>
</template>

<script>
export default {
  model: {
    prop: "showName", //自定义属性的名字,切记要在props中声明
    event: "changeName", //自定义方法名
  },
  props: {
    showName: String, 
  },
  methods: {
    changeEvent(e) {
      this.$emit("changeName", e.target.value);
    },
  },
};
</script>

父组件

<Test v-model="name" />
//v-model相当于在组件上绑定了一个名为showName的属性和一个changeName的方法(在changeName方法中修改属性的值)
<Test value="小明" @input="....."></Test>
 ...
export default {
  components: {
    Test,
  },
  data() {
    return {
      name: "小明",
    };
  },

相关文章

网友评论

      本文标题:vue自定义组件使用v-model

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