浅谈vue中关于checkbox数据绑定v-model指令的个人理解


Posted in Javascript onNovember 14, 2018

vue.js为开发者提供了很多便利的指令,其中v-model用于表单的数据绑定很常见,

下面是最常见的例子:

<div id='myApp'>
  <input type="text" v-model="msg"><br>
  {{msg}}
 </div>

js里data初始化数据

<script src="./js/vue.js"></script>
    <script type="text/javascript">
        new Vue({
            el: "#myApp",
            data() {
                return {
                    msg:'hello'
                }
            },

浏览器渲染:

    浅谈vue中关于checkbox数据绑定v-model指令的个人理解

上面可知,v-model对应的数据为input的value属性

但是如果是checkbox,会有一点问题

<div id='myApp'>
  <input type="checkbox" v-model="msg"><br>
  {{msg}}
 </div>

没有给checkbox设置value属性

js中data为'':

new Vue({
      el: "#myApp",
      data() {
        return {
          msg:''
        }
      },

浏览器渲染:

浅谈vue中关于checkbox数据绑定v-model指令的个人理解          

勾选为true,取消勾选为false    

且data中msg如果初始化为true,则checkbox默认选中          

到这里让人会有在checkbox里,v-model对应的值为true或false,似乎和checked属性有关

是不是这样呢,我们再来看一个例子:

<div id='myApp'>
   <input type="checkbox" v-model="msg" value="angular">angular<br>
   <input type="checkbox" v-model="msg" value="react">react<br>
   <input type="checkbox" v-model="msg" value="vue">vue<br>
   {{msg}}
 </div>

我们设置三个checkbox,分别设置value属性

js中依然

new Vue({
      el: "#myApp",
      data() {
        return {
          msg:''
        }
      },

浏览器:

浅谈vue中关于checkbox数据绑定v-model指令的个人理解       浅谈vue中关于checkbox数据绑定v-model指令的个人理解        浅谈vue中关于checkbox数据绑定v-model指令的个人理解

可以看到有了value属性,v-model 对应的msg 依然是true或false;

那么之前的猜想难道是正确的吗?

我们来改一点代码,通常v-model对应的都是字符串,这次我们初始化为空数组[]

data() {
    return {
     msg:[]
    }
  },

其他的不变,依然是上面三个checkbox

神奇的一幕出来了

浏览器中:

浅谈vue中关于checkbox数据绑定v-model指令的个人理解浅谈vue中关于checkbox数据绑定v-model指令的个人理解浅谈vue中关于checkbox数据绑定v-model指令的个人理解

可以看到,选中谁,谁的value就会添加到数组里,

且数据是双向绑定的,所以,当我们初始化数据的数组里赋予上面的value值时,所对应的checkbox便会默认选中

data() {    return {      msg:['vue']    }  },

浏览器渲染:

 浅谈vue中关于checkbox数据绑定v-model指令的个人理解

所以可以看到,checkbox里v-model对应的值依然是value,但是之前为什么是true或false?

我自己在网上找了很久,没有发现一个特别清楚的解释,所以在这里发表一下自己的理解:

1.checkbox和普通input一样,点击勾选其实就是输入value,而输入value会改变checked属性,所以会选中 当v-model对应“字符串”时会解析“字符串”为布尔值,v-model对应有值或是true,checkbox都会选中。

2.当v-model对应“数组”时有勾表示已选中,相当于赋值给,相当于有value,v-model对应value,       没有value属性时,点勾相当于将('null')赋值给value——>v-model('null'为字符串),      有value属性时,点勾相当于将(value)赋值给value——>v-model,      注意数据是双向绑定的,所以数组里的值对应着checkbox的value——>v-model。

3.处理表单,v-model一般都是对应字符串,所以处理checkbox的v-model,善用对应布尔值控制勾选。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 动画弹出窗体支持多种展现方式
Apr 29 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
JavaScript 经典实例日常收集整理(常用经典)
Mar 30 Javascript
AngularJS入门教程之AngularJS 模板
Aug 18 Javascript
canvas实现爱心和彩虹雨效果
Mar 09 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
JS同步、异步、延迟加载的方法
May 05 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
Nov 25 Javascript
详解Node.js异步处理的各种写法
Jun 09 Javascript
vue弹出框组件封装实例代码
Oct 31 Javascript
js实现弹框效果
Mar 24 Javascript
js html实现计算器功能
Nov 13 #Javascript
JavaScript使用类似break机制中断forEach循环的方法
Nov 13 #Javascript
小程序登录态管理的方法示例
Nov 13 #Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 #Javascript
vue代码分割的实现(codesplit)
Nov 13 #Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
Nov 13 #Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
Nov 13 #Javascript
You might like
php注册登录系统简化版
2020/12/28 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
动态统计当前输入内容的字节、字符数的实例详解
2017/10/27 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
Vue基础配置讲解
2019/11/29 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python 图片验证码代码
2008/12/07 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
python计算列表内各元素的个数实例
2018/06/29 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
夜大毕业生自我鉴定
2013/10/31 职场文书
校园网站的创业计划书范文
2013/12/30 职场文书
营销计划书范文
2015/01/17 职场文书
总经理岗位职责范本
2015/04/01 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
Python 实现Mac 屏幕截图详解
2021/10/05 Python