浅谈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 相关文章推荐
JavaScript 题型问答有答案参考
Feb 17 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
Feb 17 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 Javascript
原生Javascript封装的一个AJAX函数分享
Oct 11 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
Jul 07 Javascript
jQuery实现邮箱下拉列表自动补全功能
Sep 08 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
Nov 01 Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 Javascript
小程序实现背景音乐播放和暂停
Jun 19 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
截获网站title标签之家内容的例子
2006/10/09 PHP
PHP循环获取GET和POST值的代码
2008/04/09 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
php设计模式之单例模式代码
2016/06/11 PHP
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
python实现的简单文本类游戏实例
2015/04/28 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Python continue语句实例用法
2020/02/06 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
怎么处理XML的中文问题
2015/03/26 面试题
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
军训心得体会
2013/12/31 职场文书
教师自我反思材料
2014/02/14 职场文书
经营理念口号
2014/06/21 职场文书