浅谈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 相关文章推荐
弹出层之1:JQuery.Boxy (一) 使用介绍
Oct 06 Javascript
JavaScript代码复用模式实例分析
Dec 02 Javascript
jQuery插件的写法分享
Jun 12 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
Mar 18 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
Nov 06 Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 Javascript
浅谈js的html元素的父节点,子节点
Aug 06 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
es6的数字处理的方法(5个)
Mar 16 Javascript
Angular中的$watch、$watchGroup、$watchCollection
Jun 25 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
Jul 11 Javascript
微信小程序搭建自己的Https服务器
May 02 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
fgetcvs在linux的问题
2012/01/15 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
php加密解密字符串示例
2016/10/13 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
Django开发中复选框用法示例
2018/03/20 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
python实现数字炸弹游戏程序
2020/07/17 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
海飞丝广告词
2014/03/20 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
社区端午节活动总结
2015/02/11 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python