Vue - v-model
原创
©著作权归作者所有:来自51CTO博客作者ITKaven的原创作品,请联系作者获取转载授权,否则将追究法律责任
推荐:Vue汇总
Vue - v-model
v-model
可以在表单控件或者组件上创建双向绑定。
双向绑定
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>v-model</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="div">
<input v-model="inputValue">
</div>
</body>
</html>
<script>
var vue = new Vue({
el: '#div',
data: {
inputValue: 'Kaven'
}
})
</script>
效果如下面三张图:
改变inputValue
的值,输入框的值会跟着变。
改变输入框中的值,inputValu
e的值也会跟着变,这就是v-model
的双向绑定,和v-bind
的单向绑定不一样:Vue - v-bind,因为它们的应用场景不一样,v-bind
可以做样式的动态变化(单向绑定即可),而v-model
可以做数据的同步(需要双向绑定)。
修饰符
-
.lazy
: 取代 input
监听 change
事件。 -
.number
: 输入字符串转为有效的数字。 -
.trim
: 输入首尾空格过滤。
.lazy
lazy
是懒惰的意思,看个例子大家就明白了。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>v-model</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="div">
<input v-model="inputValue">{{inputValue}}
</div>
</body>
</html>
<script>
var vue = new Vue({
el: '#div',
data: {
inputValue: 'Kaven'
}
})
</script>
当改变输入框中的值时,旁边的文本同时也会相应跟着变化。
加上.lazy
修饰符,就会不一样了:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>v-model</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="div">
<input v-model.lazy="inputValue">{{inputValue}}
</div>
</body>
</html>
<script>
var vue = new Vue({
el: '#div',
data: {
inputValue: 'Kaven'
}
})
</script>
当改变输入框中的值时,文本中的值是不会变化的(注意光标还在输入框内)。
而当输入框失去焦点时,文本中的值才会改变(注意光标不在输入框内),这就是"偷懒"
。
.number
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>v-model</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="div">
<input v-model.number="inputValue">{{inputValue}}
</div>
</body>
</html>
<script>
var vue = new Vue({
el: '#div',
data: {
inputValue: 2
}
})
</script>
效果如下图:
在输入框中输入555kaven
,得到的是2555
,并且是number
类型。
但如果第一个字符就输入不是数字字符的话,这个修饰符感觉就没有用了,并且是string
类型。
.trim
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>v-model</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="div">
<input v-model.trim="inputValue">{{inputValue}}
</div>
</body>
</html>
<script>
var vue = new Vue({
el: '#div',
data: {
inputValue: '2'
}
})
</script>
将输入的首尾空格成功过滤了。
v-model
的使用就介绍到这里。
写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!