目录

基础用法

 v-model 本质 理解

选择的基础使用

 修饰符的使用

.lazy

 .number

.trim


基础用法

你可以用 v-model 指令在表单 <input><textarea> 及 <select> 元素上创建双向数据绑定。

它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件来更新数据,并在某种极端场景下进行一些特殊处理。

注意点:

v-model 会忽略所有表单元素的 valuecheckedselected attribute 的初始值。它将始终将当前活动实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。

简单使用

<script>
export default{
data(){
  return{
    msg: "hello World"
  }
}
}
</script>

<template>
<div>
  <!-- v-model 基本使用 -->
  <input type="text" v-model="msg">
  <h1>{{msg}}</h1>
</div>
</template>
<style>
</style>

 v-model 本质 理解

对于v-model 我们可以理解为俩个操作组成

1.v-bind 绑定一个value属性

2.v-on给当前元素添加一个input事件

代码:

<script>
export default{
data(){
  return{
    msg: "hello World"
  }
},
methods:{
  change(event){
   console.log("获取事件")
   console.log(event)
   //获取事件中target的value 就是输入框改变的值 进行赋值
   this.msg=event.target.value
  }
}
}
</script>

<template>
<div>
  <!-- v-model 基本使用 -->
  <input type="text" v-model="msg">
  <h1>{{msg}}</h1>
<!-- 本质 -->
  <input type="text" :value="msg" @input="change($event)">
</div>
</template>
<style>
</style>

 

 

选择的基础使用

注意:

有时我们可能想把值绑定到当前活动实例的一个动态 property 上,这时可以用 v-bind 实现,此外,使用 v-bind 可以将输入值绑定到非字符串

代码:

<script>
export default{
data(){
  return{
    msg: "",
    like:[],
    sex:"",
    city:"",
    cities:[],
    value:"南昌"
  }
}
}
</script>
<template>
<!--  复选框 -->
<!-- 单个勾选 v-model为布尔值 --> -->
<input type="checkbox" v-model="msg"/>
<h3>{{msg}}</h3>
<br/>
<!-- 勾选多个选项 数组形式 value进行数值绑定-->
<input type="checkbox" v-model="like" value="吃饭"/>吃饭
<input type="checkbox" v-model="like" value="睡觉"/>睡觉
<input type="checkbox" v-model="like" value="玩游戏"/>玩游戏
<h4>{{like}}</h4>
<br/>
<!-- 单选框 value 进行数值绑定 不需要name-->
<input type="radio" v-model="sex" value="男"/>男
<input type="radio" v-model="sex" value="女" />女
<h3>{{sex}}</h3>
<br/>
<!-- 选择框 都是通过value 进行数值绑定-->
<!-- 单选 -->
<select name="" id="" v-model="city">
  <option value="南昌">南昌</option>
  <option value="长沙">长沙</option>
  <option value="萍乡">萍乡</option>
  <option value="武汉">武汉</option>
</select>
<h2>{{city}}</h2>
<br>
<!-- 单选 -->
<!--有时我们可能想把值绑定到当前活动实例的一个动态 property 上,这时可以用 v-bind 实现,此外,使用 v-bind 可以将输入值绑定到非字符串  -->
<select name="" id="" v-model="cities" multiple>
  <option :value="value">南昌</option>
  <option value="长沙">长沙</option>
  <option value="萍乡">萍乡</option>
  <option value="武汉">武汉</option>
</select>
<h2>{{cities}}</h2>
</template>
<style>
</style>

 

 修饰符的使用

.lazy

在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组织文字时)。你可以添加 lazy 修饰符,从而转为在 change 事件之后进行同步

代码:

<script>
export default{
data(){
  return{
    msg: "hello world"
  }
}
}
</script>
<template>
<input type="text" v-model="msg"/>
<h3>{{msg}}</h3>
</template>
<style>
</style>

 

使用.lazy

<!-- 修饰符使用 -->
<!-- .lazy 当输入框失去焦点,再去同步输入框中的数据 -->
<input type="text" v-model.lazy="msg"/>
<h3>{{msg}}</h3>

 

 

 .number

自动将用户的输入值转为数值类型

代码:

<script>
export default{
data(){
  return{
    msg: 0
  }
}
}
</script>
<template>
<!-- 修饰符使用 -->
<!-- .number 将输入的内容自动转为数字 -->
<input type="text" v-model.number="msg"/>
<h3>{{typeof msg}}</h3>
</template>
<style>
</style>

 

 

.trim

自动过滤用户输入的首尾空白字符

代码:

<script>
export default{
data(){
  return{
    msg: "hello world"
  }
},
methods:{
  downMsg(){
    console.log(this.msg)
  }
}
}
</script>
<template>
<input type="text" v-model="msg" @keydown="downMsg"/>
<h2>{{msg}}</h2>
</template>
<style>
</style>

 使用.trim

<!-- 修饰符使用 -->
<!-- .trim 自动过滤用户输入的首尾空白字符 -->
<input type="text" v-model.trim="msg" @keydown="downMsg"/>
<h2>{{msg}}</h2>

 

 

Logo

前往低代码交流专区

更多推荐