Vue.js自定义事件的表单输入组件方法

作者:Allin丶 时间:2024-05-05 09:12:24 

Vue.js使用自定义事件的表单输入组件

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


<input v-model="something">

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


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

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


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

所以要让组件的 v-model 生效,它应该 (从 2.2.0 起是可配置的):

接受一个 value prop

在有新的值时触发 input 事件并将新值作为参数

我们来看一个非常简单的货币输入的自定义控件:--在父组件中引用子组件模板时用绑定v-model数据:


<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))
 }
}
})

自定义组件的 v-model

2.2.0 新增

默认情况下,一个组件的 v-model 会使用 value prop 和 input 事件。但是诸如单选框、复选框之类的输入类型可能把 value 用作了别的目的。model 选项可以避免这样的冲突:


Vue.component('my-checkbox', {
model: {
 prop: 'checked',
 event: 'change'
},
props: {
 checked: Boolean,
 // 这样就允许拿 `value` 这个 prop 做其它事了
 value: String
},
// ...
})

<my-checkbox v-model="foo" value="some value"></my-checkbox>

上述代码等价于:


<my-checkbox
:checked="foo"
@change="val => { foo = val }"
value="some value">
</my-checkbox>

注意你仍然需要显式声明 checked 这个 prop。

来源:http://blog.csdn.net/xiechengjian/article/details/78982604

标签:vue,自定义,表单,组件
0
投稿

猜你喜欢

  • php实现搜索一维数组元素并删除二维数组对应元素的方法

    2023-10-09 05:45:40
  • MySql数据库备份的几种方式

    2024-01-17 03:15:05
  • TensorFlow卷积神经网络AlexNet实现示例详解

    2022-06-14 21:17:30
  • 详解Python中pyautogui库的最全使用方法

    2022-11-17 17:07:14
  • 在 Python 中进行 One-Hot 编码

    2023-04-06 06:02:55
  • python之列表推导式的用法

    2021-04-22 18:54:59
  • Quoted-printable 编码介绍、Quoted-printable编码解码转换方法

    2022-02-20 07:46:05
  • PL/SQL中编写Oracle数据库分页的存储过程

    2024-01-16 08:50:24
  • javascript拖拽效果延伸学习

    2024-04-16 08:52:24
  • Mysql 数据库常用备份方法和注意事项

    2024-01-17 15:43:25
  • 在Python中使用next()方法操作文件的教程

    2023-01-17 11:21:40
  • Python图片处理之图片采样处理详解

    2021-01-14 12:58:36
  • 聊聊MySQL中的参数

    2024-01-24 20:47:01
  • Pycharm连接远程服务器过程图解

    2023-07-25 04:37:53
  • Python类中的装饰器在当前类中的声明与调用详解

    2021-03-07 10:29:35
  • 基于AJAX技术提高搜索引擎排名

    2008-01-24 12:45:00
  • 仿google的asp分页代码

    2009-03-08 18:27:00
  • JScript 的内存回收

    2007-10-16 20:02:00
  • Django中外键ForeignKey介绍使用

    2023-05-18 01:26:30
  • Python新手学习标准库模块命名

    2021-01-16 05:18:06
  • asp之家 网络编程 m.aspxhome.com