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


    自定义事件可以用来创建自定义的表单输入组件,使用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))
    }
    }
    })



  • 相关阅读:
    jQuery属性遍历、HTML操作
    jQuery效果函数
    【Solr初探】Solr安装,启动,查询,索引
    【mac osx安装opencv,python总结】
    反射给对象赋值——类型转换
    js 模拟a标签打开新网页
    MVC post 方法导出word文档
    Jquery ajax json 值回传不了
    商城
    批处理的赋值 调用 参数
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/7474076.html
Copyright © 2020-2023  润新知