自定义组件的v-model

若想封装表单上通用或美化组件,可用自定义组件v-model来实现,默认props为value和事件为input

input[type=“text”]的自定义组件

父组件上代码

<template>
  <div>
    <input-model v-model="inputVal" />
    {{inputVal}}
  </div>
</template>
<script>
import InputModel from "@/components/InputModel.vue";
export default {
  data() {
    return {
      inputVal: "默认值"
    };
  },
  components: {
    InputModel
  }
};
</script>

子组件InputModel.vue上代码

<template>
  <div>
    <input :value="value" @input="$emit('input',$event.target.value)" />
  </div>
</template>
<script>
export default {
  props: {
    value: String
  }
};
</script>

input[type=“checkbox”]的自定义组件

父组件上代码

<template>
  <div>
    <checkbox-model v-model="checked" />
    {{checked}}
  </div>
</template>
<script>
import CheckboxModel from "@/components/CheckboxModel.vue";
export default {
  data() {
    return {
      checked: false
    };
  },
  components: {
    CheckboxModel
  }
};
</script>

子组件CheckboxModel.vue上代码

<template>
  <div>
    <label>
      <input type="checkbox" :checked="checked" @input="$emit('change',$event.target.checked)" />
      {{label}}
    </label>
  </div>
</template>
<script>
export default {
  name: "CheckboxModel",
  model: {
    prop: "checked",
    event: "change"
  },
  props: {
    checked: Boolean
  }
};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值