格式如下:
# 将input标签与数据message双向绑定,改变数据message的值或者改变input标签的value值,另一方都会改变。
DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="app">
<input type="text" v-model="message"/>
<h3>{{message}}h3>
div>
<script src="../vue.js">script>
<script>
// ES6中使用let定义变量,使用const定义常量
let app = new Vue({
el: '#app', // 讲这个vue实例与id为app的标签关联起来
data: {
message: "哈哈哈"
},
})
script>
body>
html>
在讲v-model指令的实现原理之前,我们需要了解input标签的特有的一个监听事件input
。input
事件主要用来监听用户是否中输入框中输入内容。
v-model的实现原理:
v-bind
指令将数据绑定到input标签的value属性,实现数据到input标签的单向绑定v-on
实现对input标签的input
事件的监听。当input
事件发生时则将input标签中的最新的value值赋值给数据DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="app">
<input type="text" v-bind:value="message" v-on:input="inputcalue($event)"/>
<h3>{{message}}h3>
div>
<script src="../vue.js">script>
<script>
// ES6中使用let定义变量,使用const定义常量
let app = new Vue({
el: '#app', // 讲这个vue实例与id为app的标签关联起来
data: {
message: "哈哈哈"
},
methods:{
inputcalue: function(event){
<!--将input标签的value值赋值给message-->
this.message = event.target.value;
}
}
})
script>
body>
html>
效果与v-model
一样。
DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="app">
<label for="man">
<input type="radio" id="man" value="男" v-model="message"/>男
label>
<label for="woman">
<input type="radio" id="woman" value="女" v-model="message"/>女
label>
<h3>你选择的性别是:{{message}}h3>
div>
<script src="../vue.js">script>
<script>
// ES6中使用let定义变量,使用const定义常量
let app = new Vue({
el: '#app', // 讲这个vue实例与id为app的标签关联起来
data: {
message: "男"
}
}
})
script>
body>
html>
DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="app">
<label for="agree">
<input type="checkbox" id="agree" v-model="message"/>是否同意协议
label>
<h3>是否同意协议:{{message}}h3>
div>
<script src="../vue.js">script>
<script>
// ES6中使用let定义变量,使用const定义常量
let app = new Vue({
el: '#app', // 讲这个vue实例与id为app的标签关联起来
data: {
message: false
}
})
script>
body>
html>
DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="app">
<label for="lanqiu">
<input type="checkbox" id="lanqiu" value="篮球" v-model="message"/>篮球
label>
<label for="zuqiu">
<input type="checkbox" id="zuqiu" value="足球" v-model="message"/>足球
label>
<label for="yumaoqiu">
<input type="checkbox" id="yumaoqiu" value="羽毛球" v-model="message"/>羽毛球
label>
<label for="pingpangqiu">
<input type="checkbox" id="pingpangqiu" value="乒乓球" v-model="message"/>乒乓球
label>
<h3>你的爱好是:{{message}}h3>
div>
<script src="../vue.js">script>
<script>
// ES6中使用let定义变量,使用const定义常量
let app = new Vue({
el: '#app', // 讲这个vue实例与id为app的标签关联起来
data: {
message: [] //因为data需要接受多选框的多个值,所以定义为数组
}
})
script>
body>
html>
DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="app">
<select name="aaa" v-model="message">
<option value="苹果">苹果option>
<option value="香蕉">香蕉option>
<option value="桃子">桃子option>
<option value="葡萄">葡萄option>
select>
<h3>你喜欢的水果是:{{message}}h3>
div>
<script src="../vue.js">script>
<script>
// ES6中使用let定义变量,使用const定义常量
let app = new Vue({
el: '#app', // 讲这个vue实例与id为app的标签关联起来
data: {
message: '香蕉'
}
})
script>
body>
html>
DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="app">
<select name="aaa" v-model="message" multiple>
<option value="苹果">苹果option>
<option value="香蕉">香蕉option>
<option value="桃子">桃子option>
<option value="葡萄">葡萄option>
select>
<h3>你喜欢的水果是:{{message}}h3>
div>
<script src="../vue.js">script>
<script>
// ES6中使用let定义变量,使用const定义常量
let app = new Vue({
el: '#app', // 讲这个vue实例与id为app的标签关联起来
data: {
message: []
}
})
script>
body>
html>
上面我们的例子中,选择框中的所有选项都是写死的。实际开发过程中,选择框中的选项值也应该是后台的数据动态绑定的。这就是值绑定。
以上面select单选框为例:
DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="app">
<select name="aaa" v-model="message">
<option v-for="item of allmessage" :value="item">{{item}}option>
select>
<h3>你喜欢的水果是:{{message}}h3>
div>
<script src="../vue.js">script>
<script>
// ES6中使用let定义变量,使用const定义常量
let app = new Vue({
el: '#app', // 讲这个vue实例与id为app的标签关联起来
data: {
message: '香蕉' ,//该数据记录用户的选择
allmessage: ['苹果','香蕉','桃子','葡萄','番茄']//该数据记录选择框中的所有选项值
}
})
script>
body>
html>
v-model.lazy="xxx"
v-model.number="xxx"
v-model.trim="xxx"