vue 使用自定义事件的表单输入组件

本文介绍了一个Vue自定义货币输入组件的实现方法,包括如何使用v-model双向绑定,以及如何在子组件中对输入的货币值进行格式化处理和位数限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个官方文档的例子~

<currency-input v-model="price"></currency-input>
这里的v-model相当于:①v-bind:value="price"(这个value是指props['value'],可以任意定义)  ② @input="price=arguments[0]"
Vue.component('currency-input', {
  template: '\
    <span>\
      $\
      <input\
        ref="input"\
        v-bind:value="value"\          //这里的第一个value是指<input>的value不能改变,另一个是props['value']             
        v-on:input="updateValue($event.target.value)"\
      >\
    </span>\
  ',
  props: ['value'],
  methods: {
    // 不是直接更新值,而是使用此方法来对输入值进行格式化和位数限制
    updateValue: function (value) {
      var formattedValue = value
        // 删除两侧的空格符
        .trim()
        // 保留 2 位小数
        .slice(
          0,
          value.indexOf('.') === -1
            ? value.length
            : value.indexOf('.') + 3
        )
      // 如果值尚不合规,则手动覆盖为合规的值
      if (formattedValue !== value) {
        this.$refs.input.value = formattedValue
      }
      // 通过 input 事件带出数值
      this.$emit('input', Number(formattedValue))
    }
  }
})

父组件用prop给子组件传递数据。

子组件通过触发事件带出数据。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值