浅谈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 相关文章推荐
JS日历 推荐
Dec 03 Javascript
javascript 变量作用域 代码分析
Jun 26 Javascript
js对象继承之原型链继承实例
Jan 10 Javascript
jQuery带时间的日期控件代码分享
Aug 26 Javascript
详解JavaScript UTC时间转换方法
Jan 07 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
Jun 06 Javascript
JS百度地图搜索悬浮窗功能
Jan 12 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 Javascript
Vue实现底部侧边工具栏的实例代码
Sep 03 Javascript
基于JS实现简单滑块拼图游戏
Oct 12 Javascript
Vue 中 filter 与 computed 的区别与用法解析
Nov 21 Javascript
JavaScript实现多文件下载方法解析
Aug 07 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
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
JS一个简单的注册页面实例
2017/09/05 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Python函数的周期性执行实现方法
2016/08/13 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
python实现对输入的密文加密
2019/03/20 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
如何写求职信
2014/05/24 职场文书
入党介绍人意见范文
2015/06/01 职场文书
观后感格式
2015/06/19 职场文书