zoukankan      html  css  js  c++  java
  • 使用自定义事件的表单输入组件

    自定义事件可以用来创建自定义的表单输入组件,使用v-model来进行双向数据绑定。看看这个:

    <input v-model="something">

    这不过是一下示例的语法糖:

    <input v-bind:value="something" v-on:input="something=$event.target.value">

    所以在组件中使用时,它相当于下面的简写:

    <custon-input v-bind:value="something" v-on:input="something=arguments[0]"></custom-input>

    所以要让组件的v-model生效,它应该:

    1 接受一个value属性

    2 在有新的值时触发input事件

    我们来看一个非常简单的货币输入的自定义控件:

    <currency-input v-model="price"></currency-input>
    Vue.component('currency-input', {
    template: '
    <span>
    $
    <input
    ref="input"
    v-bind:value="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))
    }
    }
    })



  • 相关阅读:
    并发编程(一) 操作系统基础和进程
    操作系统发展史
    网络编程(三) 大文件传输与UDP通信
    网络编程(二)-socket套接字
    网络编程(一)
    排序算法之冒泡法
    第二章 算法基础 思考题2-1
    查找算法之二分查找
    排序算法之归并排序
    排序算法之插入排序
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/7474076.html
Copyright © 2011-2022 走看看