Vue中的v-model基本用法是什么?v-model的修饰符有什么用?
Admin 2021-10-25 群英技术资讯 889 次浏览
这篇文章给大家介绍的是关于Vue中的v-model的内容,下文有v-model的基本用法、v-model的修饰符等v-model相关的内容,感兴趣的朋友可以参考,那么接下来就跟随小编来学习一下吧。
Vue 框架早已经不是 MVVM(Mode-View-View-Model) 双向绑定了。早在 Vue 1.0 时代,Vue 在刚出世的时候的确是 MVVM 双向绑定。自 Vue 2.0 以来,Vue 就不再是双向绑定了,而是像 React 一样是单向绑定 MV(Model-View)了。但是,在 Vue 中仍保留了双向绑定的接口,v-model 就是。
1. 基本用法
<template> <div id="app"> <input v-model="x"> {{x}} </div> </template> <script> export default { data(){ return { x: 'init' } } }
在 JS 中修改 x 的值,input 输入框里也会随之改变。同样地,在页面中的 input 输入框内手动输入值,变量 x 的值也会随之改变。对象里的变量改变会影响视图的 input 的改变,视图中 input 的改变会影响对象里变量 x 值的改变。这就是双向绑定(Model-View-View-Model)。
2. v-model
实质上述使用 v-model 的代码等价于如下代码:
<template> <div id="app"> <input :value="x" @input="x = $event.target.value"> {{x}} </div> </template> <script> export default { data(){ return { x: 'init' } } } </script>
v-model 帮我们做的事就是,为 input 的 value 值设置一个动态绑定,然后在输入框的 input 事件触发后实时修改动态绑定的 value 的变量值。因此 v-model 实质是上述方式的语法糖。
$event 是原生 DOM 事件里的 event 事件对象。
3. v-model 的修饰符
所有修饰符都是起一个辅助的作用,其实可以在函数里自己判断条件实现。.lazyv-model 默认监听的是输入框的input 事件,原生 DOM 的input 事件就是记录实时的输入变化值。但是,我们有时不需要实时记录结果,只需要记录最终输入的结果值就可以了。
input 的原生 DOM 事件中还有一个change 事件,该事件是在输入框失去焦点时 或 按下回车键时 执行的。v-model 里以.lazy 修饰符的方式切换至该监听模式。
<template> <div id="app"> <input v-model.lazy="x"> {{x}} </div> </template>等价于:<template> <div id="app"> <input :value="x" @change="x = $event.target.value"> {{x}} </div> </template>
.number.number修饰符是在输入内容改变后进行变量赋值时,自动使用 parseFloat() 函数将其变成数字。使用该修饰符时变量的初始值必须是数字。
<template> <div id="app"> <input v-model.number="x"> {{x}} </div> </template> <script> export default { data(){ return { x: 0 } } } </script>
.trim修饰符是将输入的内容改变后进行变量赋值时,自动忽略和去除前后的空格。更为精准地记录输入的字符串内容。
<template> <div id="app"> <input v-model.trim="x"> {{x}} </div> </template> <script> export default { data(){ return { x: 'init' } } } </script>
4. 自定义输入框的 v-modelv-model
的基本用法仅仅适用于原生的输入框元素 ,对于用户自己封装的输入框,可以用如下方式使用 v-model。当用在组件上时,v-model 的实质如下:
<custom-input v-model="x"></custom-input> 等价于: <custom-input :value="x" @input="x = $event"></custom-input>
因此,在自定义表单组件里的写法如下:
<template> <div class="wrapper"> <input :value="value" @input="$emit('input', $event.target.value)"> </div> </template> <script> export default { props: { value: { type: String } } } </script> <style scoped> .wrapper{ border: 2px solid blue; display: inline-block; } .wrapper input{ color: red; } </style> <template> <div id="app"> <MyInput v-model="x"/> {{x}} </div> </template> <script> import MyInput from './components/MyInput' export default { data(){ return { x: 0 } }, components:{ MyInput } } </script>
补充:若想在自定义组件里面的原生输入框也使用 v-model,可以根据组件 v-model 的实质,使用计算属性的赋值方式为=使用。
以上就是Vue中的v-model使用的相关介绍,上述示例具有一定的借鉴价值,需要的朋友可以参考学习,希望对大家有帮助,想要了解更多可以继续浏览群英网络其他相关的文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
判断语句这个我们不陌生,就是判断是否满足指定的条件,如果满足则执行一定的代码,否则跳过,下面这篇文章主要给大家介绍了关于JavaScript中判断的优雅写法,需要的朋友可以参考下
这篇文章给大家分享的是jQuery如何实现图片隐藏和显示的一个示例,文中示例是实现一张图片慢慢消失隐藏后,显示另一种图片的效果,那么具体怎样实现呢?文中的示例介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
idea编译器出现Vue缩进报错,怎么解决呢,很多朋友遇到这个问题都很棘手,不知该如何解决,今天小编给大家通过场景分析介绍解决方案,需要的朋友参考下吧
TypeScript中命名空间与模块化详情 目录 一.模块 二.命名空间 三.区别 一.模块 TypeScript 与ECMAScript 2015 一样,任何包含顶级 import 或者 export 的文件都被当成一个模块 相反地,如果一个文件不带有顶级的import或者export声明,那么它的内容被视为全局可见的 例如我们在在一个 TypeScript 工程下建立一个文件 1.ts,声明一个变量a,如下: const a = 1 然后在另一个文件同样声明一个变量a,这时候会出现错误信息 提示重复声明a变量,但是所处的空间是全局的
jQuery怎样获取自己除外的元素?在jquery中,想要实现获取自己除外的其他的元素,我们可以利用not()方法,这里还需要使用到this关键字,文中有示例代码供大家参考,感兴趣的朋友可以参考,接下来跟随小编来学习一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008