冇事来学系--Vue2.0双向数据绑定指令v-model

简介: 用于在不操作DOM的情况下,快速获取表单数据

用于在不操作DOM的情况下,快速获取表单数据


注意:只有在表单元素中使用v-model才有意义

  1. input输入框(type= text/radio/checkbox...)
  2. textarea
  3. select
<div id="app">
  <input type="text" v-mode="username">  <!-- 让文本框的内容与某个数据双向绑定 -->
  <!-- 在使用v-model的时候不用再写value,因为v-model指令在底层封装的时候就对监听了文本框的value值的变化 -->
  <input type="text" :value="username">
  <!-- 双向数据绑定与单向数据绑定 -->
  <!-- 单向数据绑定:数据源的改动会同步到页面上,但页面输入的数据不会影响到数据源的数据 -->
  <select v-model="city">
     <option value="">请选择你的城市</option>
     <option value="1">北京</option>
     <option value="2">上海</option>
     <option value="3">广州</option>
     <option value="4">深圳</option>
  </select>
</div>
const vm = new Vue({
  el: '#app',
  data: {
    username:'zhangsan',
    city: ''    // city为空,默认选中“请选择你的选择城市”的选项。可以设置数字来选定默认的选项
  },
  methods: {
  }         
})


v-model指令的修饰符


  • .number 自动将用户输入的值转化为数值类型( 用户在输入框输入的都是字符串 )
  • .trim 自动过滤用户输入的首位空白字符
  • .lazy 在"change"时而非"input"时更新(如:textarea里面输入时并没有实时获取,而是当输入框失去焦点时内容才被获取)
<div id="app">
  <input type="text" v-mode.number="n1"> + <input type="text" v-mode.number="n2"> = {{ n1 + n2 }}
  <!-- 注意:文本框获取的都是字符串,进行四则运算得进行数据类型转换 -->
  <!-- 使用.number修饰符,就能将字符串转化为数字型 -->
  <!-- 也可以将type设置为number,这样就只能输入数字而不能输入其他类型的字符 -->
  <input type="number" v-mode.number="n1">
</div>
const vm = new Vue({
  el: '#app',
  data: {
    n1: 1,
    n2: 2
  },
  methods: {
  }         
})

补充:

v-model与其他表单元素的绑定


1.  单选按钮

在单选按钮中先设置一个value值

<template>
  <div id="root">
    // 单选按钮设置相同的name属性,实现多选一的效果
    性别:男<input type="radio" name="sex" v-model="sex">
    女<input type="radio" name="sex" v-model="sex">
  </div>  
</template>
<script>
  export default {
    el: "#root"
    data: {
      sex: ''
    }
  }
</script>
// 直接使用v-model绑定radio与data中的sex时,无论点击哪个按钮,都不能获取到选定的按钮,调试工具中data中的sex为null
解决方法:要在单选按钮中先设置一个value值,因为v-mdoel是与value绑定的

2.  复选框checkbox

首先要给每个复选框设置value值,然后在data中要用一个数组来与v-model绑定(因为复选框可以选中多个value值,所以要用数组来接收)

<template>
  <div id="root">
    // 单选按钮设置相同的name属性,实现多选一的效果
    性别:男<input type="radio" name="sex" v-model="sex">
    女<input type="radio" name="sex" v-model="sex">
    爱好:
    抽烟<input type="checkbox" value="smoking" v-model="hobby"> 
    喝酒<input type="checkbox" value="drinking" v-model="hobby">  
    烫头<input type="checkbox" value="tangtou" v-model="hobby"> 
    <input type="checkbox" v-model="agree"> 已阅读并接收此协议
  </div>  
</template>
<script>
  export default {
    el: "#root"
    data: {
      hobby: [],    // v-model对应的值要用数组来接收,因为复选框可以选中多个value
      agree: 'false'    // 默认为false,即不勾选状态
    }
  }
</script>

注意:如果是只有一个复选框,勾选是否同意的情形,则不需要配置value,也不需要在data中设置数组来与v-model绑定。直接让v-model绑定一个布尔值的变量agree

补充:

如何收集表单的数据?

在data中可以用一个userinfo对象来包裹获取到的表单的值,然后再表单提交的时候(from绑定submit方法),处理函数中使用JSON.stringify( )方法将userinfo对象转化为字符串,输出就可以看到收集的表单数据

注意还要阻止表单提交时自动跳转的默认行为

目录
相关文章
|
8天前
|
JavaScript 前端开发
请详细解释一下Vue的模板语法中各个指令的具体用法。
请详细解释一下Vue的模板语法中各个指令的具体用法。
21 2
|
8天前
|
JavaScript 前端开发 算法
千分位分隔?一个vue指令搞定
千分位分隔?一个vue指令搞定
51 0
|
8天前
|
JavaScript 前端开发 算法
函数防抖?一个vue指令搞定
函数防抖?一个vue指令搞定
39 0
|
8天前
|
JavaScript
vue常用指令
vue常用指令
16 1
|
8天前
|
JavaScript 前端开发
vue常见的指令
vue常见的指令
10 2
|
8天前
|
JavaScript 前端开发 安全
【Vue】内置指令真的很常用!
【Vue】内置指令真的很常用!
|
8天前
|
JavaScript 前端开发 开发者
Vue的指令系统:Vue内置指令的使用
【4月更文挑战第24天】Vue.js 指令详解:简化DOM操作与数据绑定。Vue提供以`v-`开头的内置指令,如`v-bind`(响应式更新属性)、`v-model`(双向数据绑定)、`v-if/v-else`(条件渲染)、`v-for`(循环渲染)、`v-on/@`(事件监听)等,提升开发效率和代码可读性。通过`v-bind`绑定属性,`v-model`处理表单数据,`v-if/v-for`控制元素显示与循环,以及`v-on`响应事件,开发者能更高效地构建用户界面。理解并掌握这些指令对Vue开发至关重要。
|
8天前
|
JavaScript 前端开发 UED
数据绑定魔法:Vue中的插值和指令
【4月更文挑战第22天】Vue.js 是一款轻量级前端框架,擅长处理动态数据。本文聚焦于Vue中的数据绑定,包括插值和指令。插值({{ }})用于在HTML中展示JavaScript表达式,如变量和简单运算。指令(v-前缀)如v-bind、v-model和v-on,则提供更复杂的声明式渲染。v-bind绑定属性,v-model实现双向数据绑定,v-on监听DOM事件。指令还支持修饰符(如.prevent)和动态参数,增强灵活性。掌握这些,能提升开发效率并创建响应式界面。
|
8天前
|
JavaScript 开发者
VUE指令: 请解释v-pre指令的作用。
`v-pre`指令在Vue中用于避免元素及子元素的编译,显示原始HTML。当需要防止模板解析,如固定文本,可使用此指令。但注意,它会忽略插值、事件绑定等。适用于提升性能,跳过无指令节点的编译。
12 0
|
8天前
|
JavaScript
VUE指令:v-once指令是用来做什么的?
`【4月更文挑战第16天】v-once`是Vue指令,用于一次性渲染元素/组件,不响应后续数据变化,适用于静态内容。在Vue3中,它能优化性能,但可能阻止数据更新。子元素默认也遵循此规则。结合使用`v-memo`可控制渲染,提升效率。需谨慎使用,以免影响正常更新。
13 0