v-model 和表单

v-model

指令用于表单类元素双向绑定数据

<div id="app"> 

input 和 textarea 用法:

<input type="text" v-model="value">
下面实时显示 value 的值
input 输入什么右边就显示什么 ---> {{value}}

<textarea cols="30" rows="10" v-model="msg">这里的初始化值不会显示出来</textarea>
-------------------------------------
单选框用法:组合使用多个单选框需要用 v-model 来配合 value 使用,绑定选中的单选框的 value 值,data 中的初始数据可以随意给。

单个单选框:<input type="radio" name="" v-bind:checked="oneradio">
单个单选框用 v-model 不生效

多个单选框:
Jack: <input type="radio" name="name" value="Jack" v-model="checkName">
John: <input type="radio" name="name" value="John" v-model="checkName">
Frank: <input type="radio" name="name" value="Frank" v-model="checkName">
现在选中的是:{{checkName}}
-------------------------------------
复选框用法:组合使用多个复选框需要用 v-model 来配合 value 使用,v-model 绑定一个数组。
如果绑定的是一个字符串,会转换为 true or false,所有复选框都(同步)对应这个字符串的值。

单个复选框: 使用 v-bind 和 v-model 都可以
<input type="checkBox" :checked="oneradio">
<input type="checkBox" v-model="oneradio">

多个复选框:
Jack: <input type="checkbox" value="Jack" v-model="checkArr">
John: <input type="checkbox"  value="John" v-model="checkArr">
Frank: <input type="checkbox" value="Frank" v-model="checkArr">
现在选中了:{{checkArr}}
-------------------------------------
下拉框:v-model 初始既可以绑定数组也可以绑定字符串,选择之后都会被自动转化为字符串(单选下拉框)或者数组(多选下拉框)。

单选下拉框:
<select v-model="selected">
  <option value="Jack">Jack</option>
  <option value="John">John</option>
  <option value="Frank">Frank</option>
</select>

多选下拉框:
<select v-model="selected"  multiple>
  <option value="Jack">Jack</option>
  <option value="John">John</option>
  <option value="Frank">Frank</option>
</select>

</div>

var app = new Vue({
  el: '#app',
  data: {
	value: '',
	msg: '',
	oneradio: false,
	checkName: '',
	selected: [],  // or ''
  }
})

总的来说,单选的初始化最好给定字符串,v-model 此时绑定的是字符串或者布尔值;多选的初始化最好给定一个数组。

需要注意的是:表单控件只关心(依赖于) v-model 绑定的数据的值,而不会显示控件中初始化写入的值。

绑定值

  • 单选
<input v-model="picked" :value="value">
此时的 picked 值:{{picked}}

data: {
  picked: true,
  value: '绑定的 value'
}

页面刚开始加载完成 {{picked}} 显示的是 data 中的初始值,而此时单选是没有被选中的,如果选中单选框,picked 动态加载为 v-bind 绑定的 value 值。

也就是说,单选框的 v-model 动态绑定的是 v-bind 绑定的 value 值。

  • 多选
<input type="checkbox" v-model="checked" :true-value="valueT" :false-value="valueF">

在这里显示 checked 的值:{{checked}}
被选中:{{checked == valueT}}  // true or false
没选中:{{checked == valueF}}  // true // false

data: {
  checked: true,
  valueT: '我被选中了',
  valueF: '我没有被选中'
}

绑定的值选中和未选中不一样

  • 下拉框
<select v-model="selected">
  <option :value="{name: Jack}">Jack</option>

  此时 selected 的类型为:{{typeof selected}}
  此时 selected 的值为:{{selected}}
</select>

在没有选择之前,v-model 绑定的为 data 中初始化的 selected 值,而选中了之后绑定的是 option 中的 value 值。

在 select 标签上绑定 value 值对 option 没有影响。

修饰符

  • lazy
    v-model 默认同步 input 的输入框的数据,而 lazy 修饰符可以使其在失去焦点或者敲回车键之后在更新数据。
<input type="text" v-model.lazy="lazyStr">
  • number
    将 input 输入的字符串转化为 number 类型,“123” --> 123。
<input type="text" v-model.number="isNum">
{{typeof isNum}}
  • trim
    自动过滤输入过程中收尾输入的空格。
<input type="text" v-model.trim="str">
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值