Vue.js的表单输入绑定,用的是 v-model指令。v-model指令可以创建双向数据绑定。

Vue.js 的表单输入绑定 v-model

v-model指令会根据控件类型自动选取正确的方法来更新元素。我们知道html的表单输入主要有一下类型,那么,我们就来看看v-model怎么实现的:

  • 文本 <input >
  • 多行文本 <textarea>
  • 复选框 <input type="checkbox" >
  • 单选按钮 <input type="radio" >
  • 选择框<select>

Vue.js 的表单输入绑定 v-mode之文本和多行文本

v-model 会根据控件类型自动选取正确的方法来更新元素。


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - Break易站(breakyizhan.com)</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <p>input 元素:</p>
  <input v-model="message" placeholder="编辑我……">
  <p>消息是: {{ message }}</p>
	
  <p>textarea 元素:</p>
  <p style="white-space: pre">{{ message2 }}</p>
  <textarea v-model="message2" placeholder="多行文本输入……"></textarea>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    message: 'Breakyizhan',
	message2: 'Break易站
//www.breakyizhan.com'
  }
})
</script>
</body>
</html>

尝试一下 >>

Vue.js 的表单输入绑定 v-mode之复选框

复选框如果是一个为逻辑值,如果是多个则绑定到同一个数组:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - Break易站(breakyizhan.com)</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <p>单个复选框:</p>
  <input type="checkbox" id="checkbox" v-model="checked">
  <label for="checkbox">{{ checked }}</label>
	
  <p>多个复选框:</p>
  <input type="checkbox" id="breakyizhan" value="breakyizhan" v-model="checkedNames">
  <label for="breakyizhan">breakyizhan</label>
  <input type="checkbox" id="google" value="Google" v-model="checkedNames">
  <label for="google">Google</label>
  <input type="checkbox" id="taobao" value="Taobao" v-model="checkedNames">
  <label for="taobao">taobao</label>
  <br>
  <span>选择的值为: {{ checkedNames }}</span>
</div>

<script>
new Vue({
  el: '#app',
  data: {
	checked : false,
    checkedNames: []
  }
})
</script>
</body>
</html>

尝试一下 >>

Vue.js 的表单输入绑定 v-mode之单选按钮

v-model单选按钮双向数据绑定:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - Break易站(breakyizhan.com)</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <input type="radio" id="breakyizhan" value="breakyizhan" v-model="picked">
  <label for="breakyizhan">breakyizhan</label>
  <br>
  <input type="radio" id="google" value="Google" v-model="picked">
  <label for="google">Google</label>
  <br>
  <span>选中值为: {{ picked }}</span>
</div>

<script>
new Vue({
  el: '#app',
  data: {
	picked : 'breakyizhan'
  }
})
</script>
</body>
</html>

尝试一下 >>

Vue.js 的表单输入绑定 v-mode之选择框

v-mode选择框双向数据绑定:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - Break易站(breakyizhan.com)</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <select v-model="selected" name="fruit">
    <option value="">选择一个网站</option>
    <option value="www.breakyizhan.com">Break易站</option>
    <option value="www.google.com">Google</option>
  </select>
 
  <div id="output">
      选择的网站是: {{selected}}
  </div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
	selected: '' 
  }
})
</script>
</body>
</html>

尝试一下 >>

修饰符

.lazy

在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 。你可以添加 lazy 修饰符,从而转变为使用 change事件进行同步:

<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg" >

.number

如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:

<input v-model.number="age" type="number">

这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。

.trim

如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:

<input v-model.trim="msg">
 
转载请保留页面地址:https://www.breakyizhan.com/vue/6690.html
扫描二维码添加微信 
  • ,每次淘宝领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘50元优惠券!添加微信后回复机械键盘即可领取!
    支持我们,就用微信淘宝!