Vue.js框架 v-model指令

v-model 指令在表单 <input> 及 <textarea> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

v-model 会忽略所有表单元素的 valuecheckedselected 特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data选项中声明初始值。

对于需要使用输入法 (如中文、日文、韩文等) 的语言,你会发现 v-model 不会在输入法组合文字过程中得到更新。如果你也想处理这个过程,请使用 input 事件。

一、input输入框绑定实例:

实现思路:

分别定义data下的name,age,like,作为其初始值,当input输入框内的信息变化时,下面内容会发生变化,并更改data下的值。

全部代码:
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
   <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
   <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

   <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--学生成绩表-->
<div id="app" class="container">
   <div class=" col-xs-4 col-md-offset-4">
   <h1>个人信息</h1>

<div>姓名:<input type="text" v-model="name" class="form-control text-center" placeholder="请输入你的个人信息">
   <pre>{{ name }}</pre>
   </div>
      <div>年龄:<input type="text" v-model="age" class="form-control text-center" placeholder="年龄">
         <span>{{   age }}</span>
      </div>
      <div>爱好:<input type="text" v-model="like" class="form-control text-center" placeholder="爱好">
         <span>{{   like }}</span>
      </div>
</div>

</div>

<script>
 var app  = new  Vue({
      el:"#app",
 data:{
         name:"李四",
 age:24,
 like:"跑步"
 },
 computed:{
         sum: function () {
            return  this.math + this.physics + this.english

 },
 average:function () {
            return Math.round((this.sum/3))

         }
      }
   })

</script>

</body>
</html>
核心代码:
<div id="app" class="container">
   <div class=" col-xs-4 col-md-offset-4">
   <h1>个人信息</h1>

<div>姓名:<input type="text" v-model="name" class="form-control text-center" placeholder="请输入你的个人信息">
   <pre>{{ name }}</pre>
   </div>
      <div>年龄:<input type="text" v-model="age" class="form-control text-center" placeholder="年龄">
         <span>{{   age }}</span>
      </div>
      <div>爱好:<input type="text" v-model="like" class="form-control text-center" placeholder="爱好">
         <span>{{   like }}</span>
      </div>
</div>

</div>

<script>
   var app  = new  Vue({
      el:"#app",
      data:{
         name:"李四",
         age:24,
         like:"跑步"
      },

   })

</script>

v-model的修饰符

input事件触发后将输入框的值与数据进行同步,当我们不想其更新太频繁的时候,就可以选择使用.lazy修饰符,就可以让其更新频率降低。此外input输入内容的类型均为字符格式,对于一些固定是数字的格式我们可以使用.number修饰符将其转换为数字,方便运算操作,不需要后期转换类型。

.lazy

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

<!-- 在“change”时而非“input”时更新 --><input v-model.lazy="msg" >

.number

如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:

<input v-model.number="age" type="number">

这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。

在data定义的age为×××的数字,当我们重新输入内容时,发现其变为字符类型,这时我们可以加上.number的修饰符


添加.number修饰符后

.trim

如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:

<input v-model.trim="msg">

未添加.trim属性前(注意普通的html对空格不敏感一般默认为一个,这里引入<pre></pre>标签)

添加其修饰符后

二、input 输入框类型为单选框

<h2>性别</h2>
<label>男:
   <input type="radio"   v-model="sex" value="male"  class="">
</label>

<label>女
   <input type="radio"   v-model="sex"  value="female" ></label>
<hr>
 性别:{{ sex }}
 
 <script>
   var app  = new  Vue({
      el:"#app",
      data:{
         name:"李四",
         age:24,
         like:"跑步",
         sex:'female'
      },
   })

</script>

   

三、input 输入框类型为复选框

<h2>爱好:</h2>
<label class="btn btn-default">跑步
   <input type="checkbox"   v-model="like" value="跑步"  >
</label class="btn btn-default">
<label class="btn btn-default">爬山
   <input type="checkbox"   v-model="like" value="爬山" >
</label >
<label class="btn btn-default">阅读
   <input type="checkbox"   v-model="like" value="阅读" >
</label>
<label class="btn btn-default">游泳
   <input type="checkbox"   v-model="like" value="游泳"  >
</label class="btn btn-default">
<label class="btn btn-default">逛街
   <input type="checkbox"   v-model="like" value="逛街" >
</label >
<label class="btn btn-default">健身
   <input type="checkbox"   v-model="like" value="健身" >
</label>

<hr>
爱好:{{ like }}

<script>
   var app  = new  Vue({
      el:"#app",
      data:{
         name:"李四",
         age:24,
         info:"长江后浪推前浪",
         sex:'female',
         like:[]

      },
   })

</script>

      

四、多行文本textarea

多行文本
{{msg}}
<script>
   var app  = new  Vue({
      el:"#app",
      data:{
         name:"李四",
         age:24,
         info:"长江后浪推前浪",
         sex:'female',
         like:[],
         msg:"多行文本"

      },
   })

</script>

在文本区域插值 (<textarea></textarea>) 并不会生效,应用 v-model 来代替。

五、选择框

1、单选

<hr>单选

   <select v-model="selecte">
      <option disabled value="">请选择</option>
      <option>A</option>
      <option>B</option>
      <option>C</option>
   </select>
   <span>Selected: {{ selecte }}</span>

<hr>
<script>
   var app  = new  Vue({
      el:"#app",
      data:{
         name:"李四",
         age:24,
         info:"长江后浪推前浪",
         sex:'female',
         like:[],
         msg:"多行文本",
         selecte:'',
         selected:[]

      },
   })

</script>

2、多选

<hr>
<select v-model="selected" multiple style="width: 50px;">
   <option>A</option>
   <option>B</option>
   <option>C</option>
</select>
<br>
<span>Selected: {{ selected }}</span>
<script>
   var app  = new  Vue({
      el:"#app",
      data:{
         name:"李四",
         age:24,
         info:"长江后浪推前浪",
         sex:'female',
         like:[],
         msg:"多行文本",
         selected:[]

      },
   })

</script>

用 v-for 渲染的动态选项

<select v-model="selected">  <option v-for="option in options" v-bind:value="option.value">    {{ option.text }}  </option></select><span>Selected: {{ selected }}</span>
new Vue({  el: '...',  data: {    selected: 'A',    options: [      { text: 'One', value: 'A' },      { text: 'Two', value: 'B' },      { text: 'Three', value: 'C' }    ]  }})

原文地址:http://blog.51cto.com/dreamlinux/2118555

时间: 2024-09-29 14:21:06

Vue.js框架 v-model指令的相关文章

什么是vue.js中的自定义指令?

问题一:什么是vue.js中的自定义指令? 自定义一些指令对底层DOM进行操作 更多参考 Vue里面有许多内置的指令,比如v-if和v-show,这些丰富的指令能满足我们的绝大部分业务需求,不过在需要一些特殊功能时,我们仍然希望对DOM进行底层的操作,这时就要用到自定义指令. 问题二:自定义指令的几个钩子函数 bind:只调用一次,指令第一次绑定到元素时调用.在这里可以进行一次性的初始化设置. inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中). upda

vue.js介绍,常用指令,事件,以及制作简易留言版

一.vue是什么? 一个mvvm框架(库).和angular类似,比较容易上手.小巧,让我们的代码更加专注于业务逻辑,而不是去关注DOM操作 二.vue和angular之间的区别 vue--简单易学 指令以v-xx 一片html代码配合上json,再new出来vue实例 个人维护项目 适合:移动端项目,小巧 angular--上手难 指令以ng-xxx 所有属性和方法都挂在$scope身上 angular由google维护 适合:pc端项目 共同点:不兼容低版本的IE 三.vue的基本使用 1.

Vue.js入门。十个指令。4种常用方法

在进入Vue之前我们还是先了解一下使用Vue的面向对象的三种创建方式吧 类和对象是 面向编程中最重要的两个概念,一定要理清 类 : 是一个抽象概念(不是实际存在),(属性,行为) 对象 : 是实际存在的,是对象的实例化,看过几个例子你就会明白. 在ES6之前:1.内置的构造函数:2.自定义的构造函数:3.字面量 . 1.内置的构造函数: 2.自定义的构造函数: 3.字面量 . 创建Vue实例 首先要确保你的项目引入了Vue.js,需要用他的框架就必须要引用! 创建一个vue实例非常简单 data

web前端技术内容详解之Vue.js框架

Vue.js是一个渐进式框架,只需要具备基本的HTML/CSS/JavaScript基础就可以快速上手.在用Vue.js构建大型应用时推荐使用NPM安装,但是需要注意npm的版本需要大于3.0.在通过npm安装项目后,我们需要对其目录进行解析:(1)Build:项目构建(webpack)相关代码;(2)config:配置目录,包括端口号等.(3)node_modules:npm加载的项目依赖模块(4)src:这个目录当中的内容包含了我们基本上要做的事情,这里包含了几个文件:(一)assets:存

为什么手机wap端都喜欢用VUE.js框架?Vue框架特点

Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API: ? ?Vue.js是一个构建数据驱动的Web界面的库. ? ?Vue.js是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用.数据驱动+组件化的前端开发. 简而言之:Vue.js是一个构建数据驱动

Vue.js学习笔记: 指令

指令(Directives)是特殊的带有前缀v-的特性.指令的值限定为绑定表达式,指令的职责就是当其表达式的值改变时把某些特殊的行为应用到DOM上 HTML: <div id="test01">     <p v-if="greeting">Hello!</p> </div> 这里,v-if指令将根据表达式greeting值得真假  删除/插入p元素 JS: var vm1=new Vue({     el:'#tes

Vue.js学习笔记: 指令 v-if

v-if  完全根据表达式的值在DOM中生成或移除一个元素.如果v-if表达式赋值为false,那么对应的元素就会从DOM中移除:否则,对应元素的一个克隆将被重新插入DOM中. <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Title</title> </head> <

Vue.js学习笔记: 指令 v-on

Vue.js官方文档对于 v-on 这一常用指令提供了缩写方法,看看官网是怎么介绍的 <!-- 完整语法 --> <a v-on:click="doSomething"></a> <!-- 缩写 --> <a @click="doSomething"></a> 1.方法处理器 可以用 v-on 指令监听DOM事件 <div id="box">     <bu

Vue.js学习(常用指令)

Vue.js的指令是以v-开头,它们用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性. Vue.js提供了一些内置指令,现在来介绍一下常用的内置指令. v-if指令           v-if是条件渲染指令,它根据表达式的真假来添加或删除元素,它的基本语法:v-if = "expression",expression是一个bool值的表达式,该表达式既可以是bool属性,也可以是一个返回b