冇事来学系--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对象转化为字符串,输出就可以看到收集的表单数据

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

目录
相关文章
|
13天前
|
JavaScript
Vue 指令速查表
【10月更文挑战第12天】Vue 指令速查表
|
24天前
|
JavaScript 开发者
vue指令的开发看这篇文章就够了!超详细,赶快收藏!
【10月更文挑战第8天】vue指令的开发看这篇文章就够了!超详细,赶快收藏!
vue指令的开发看这篇文章就够了!超详细,赶快收藏!
|
26天前
|
JavaScript 前端开发
VUE学习三:双向绑定指令(v-mode)、组件化开发(全局组件/局部组卷/组件通信)、组件化高级(slot插槽使用)
这篇文章是关于Vue.js框架中的v-model指令和组件化开发的详细教程,涵盖了从基础使用到高级功能的多个方面。
28 1
|
26天前
|
JavaScript 前端开发 开发者
VUE学习一:初识VUE、指令、动态绑定、计算属性
这篇文章主要介绍了Vue.js的基础知识,包括初识Vue、指令如v-for、v-on的使用、动态属性绑定(v-bind)、计算属性等概念与实践示例。
55 1
|
2月前
|
JavaScript 前端开发
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
|
2月前
|
JavaScript 前端开发 API
Vue学习笔记7:使用v-for指令渲染列表
Vue学习笔记7:使用v-for指令渲染列表
|
21天前
|
人工智能 JavaScript 程序员
vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持
vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持
92 0
|
21天前
|
JavaScript 算法 前端开发
在Vue开发中v-if指令和v-show指令的使用介绍,v-if和v-for的优先级以及使用注意事项的介绍
在Vue开发中v-if指令和v-show指令的使用介绍,v-if和v-for的优先级以及使用注意事项的介绍
11 0
|
3月前
|
JavaScript
基于Vue2或Vue3实现任意上下左右拖拽悬浮的元素,且配置为自定义的全局指令
这篇文章介绍了如何在Vue 2或Vue 3项目中实现一个自定义的全局指令`v-dragSwitch`,用于创建可以任意方向拖拽并悬浮的元素,同时包含边界处理的逻辑。
956 2
基于Vue2或Vue3实现任意上下左右拖拽悬浮的元素,且配置为自定义的全局指令
|
3月前
|
JavaScript 前端开发 安全
svg图片hover变色,居然只用一个vue指令就可以搞定!千万别在写两个控制显影了!
【8月更文挑战第22天】svg图片hover变色,居然只用一个vue指令就可以搞定!千万别在写两个控制显影了!
301 3