浅谈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 相关文章推荐
IE6/7/8中Option元素未设value时Select将获取空字符串
Apr 07 Javascript
jQuery :nth-child前有无空格的区别分析
Jul 11 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
Sep 02 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
Aug 12 Javascript
js仿小米官网图片轮播特效
Sep 29 Javascript
bootstrapValidator自定验证方法写法
Dec 01 Javascript
Bootstrap布局之栅格系统学习笔记
May 04 Javascript
JS实现上传图片实时预览功能
May 22 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 Javascript
vue中动态绑定表单元素的属性方法
Feb 23 Javascript
Vue.js样式动态绑定实现小结
Jan 24 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 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
sql注入与转义的php函数代码
2013/06/17 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
js自带函数备忘 数组
2006/12/29 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
JS实现列表页面隔行变色效果
2017/03/25 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
跟老齐学Python之复习if语句
2014/10/02 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
Python WEB应用部署的实现方法
2019/01/02 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
python实现抽奖小程序
2020/04/15 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
pymysql的简单封装代码实例
2020/01/08 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
医生个人年终总结
2015/02/28 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
浅谈Java父子类加载顺序
2021/08/04 Java/Android