《vue-内置指令-3-表单与v-model》

118 阅读2分钟

1、基本用法

1.1、v-model:

v-model:是vue的双向绑定指令,能将页面上控件输入的值同步更新到绑定的data相关属性,也会在修改data属性的时候,更新页面上控件的值;

分析:内部使用v-bind和input事件监听值的变化;一方面modal层通过defineProperty来劫持每个属性,一旦监听到变化通过相关的页面元素更新。另一方面通过编译模板文件,为控件的v-model绑定input事件,从而页面输入时能实时更新相关data属性值。

1.2、input和textarea

点击看案例
可以用于input框,以及textarea等

注意:所显示的值只依赖于所绑定的数据,不再关心初始化时的插入的value

    <div id="app">
      <input type="text" v-model="text">{{text}}<br><br>
      <input type="text" v-model="msg" :style="{'height':height+'px'}">{{msg}}
    </div>
 data:{
       text:'请输入!',
       msg:'请输入!',
       height:100
      },

1.3、radio单选按钮

点击看案例
1). 单个单选按钮,直接用v-bind绑定一个布尔值,用v-model是不可以的

<input type="radio" :checked="oneStart">

2). 如果是组合使用,就需要v-model来配合value使用,绑定选中的单选框的value值, 此处所绑定的初始值可以随意给

冰箱<input type="radio" name="checks" value="冰箱" v-model="checkname">
电视<input type="radio" name="checks" value="电视" v-model="checkname">
空调<input type="radio" name="checks" value="空调" v-model="checkname">
{{checkname}}
data:{
    oneStart:false,
    checkname=''
    
}

1.4、checkbox复选框:

  1. 单个复选框,直接用一个布尔值,可以用v-model可以用v-bind
<input type="checkbox" :checked="oneStart">
  1. 多个复选框,如果是组合使用,就需要v-model来配合value使用,v-model绑定一个数组;如果绑定的是字符串,则会转化为true,false,与所有绑定的复选框的 checked属性相对应
冰箱<input type="checkbox"  value="冰箱" v-model="checks">
电视<input type="checkbox" value="电视" v-model="checks">
空调<input type="checkbox"  value="空调" v-model="checks">
data:{
    oneStart:false,
    checks:'[]'
}

1.5、select下拉框

  1. 如果是单选,所绑定的value值初始化可以为数组,也可以为字符串,有value直接优先匹配一个value值,没有value就匹配一个text值
  2. 如果是多选,就需要v-model来配合value使用,v-model绑定一个数组,与复选框类似
  3. v-model一定是绑定在select标签上

总结:如果是单选,初始化最好给定字符串,因为v-model此时绑定的是静态字符串或者布尔值

如果是多选,初始化最好给定一个数组

1.6、绑定值

  • 单选按钮

只需要用v-bind给单个单选框绑定一个value值,此时,v-model绑定的就是他的value值

<input type="radio" v-model="text" :value="value">{{text}}<br><br>
data:{
   value:'121'
}
  • 复选框
  • 下拉框

在select标签上绑定value值对option并没有影响

1.7、修饰符

  • lazy

v-model默认是在input输入时实时同步输入框的数据,而lazy修饰符,可以使其 在失去焦点或者敲回车键之后在更新

  • number

将输入的字符串转化为number类型

  • trim

trim自动过滤输入过程中收尾输入的空格