浅谈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一般方法介绍 入门参考
Jun 21 Javascript
使用javascript创建快捷方式的简单实例
Aug 09 Javascript
js获得网页背景色和字体色的方法
Mar 21 Javascript
JavaScript严格模式详解
Nov 18 Javascript
基于javascript html5实现3D翻书特效
Mar 14 Javascript
Vue.js每天必学之内部响应式原理探究
Sep 07 Javascript
深入理解JavaScript定时机制
Oct 27 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
JS+CSS实现下拉刷新/上拉加载插件
Mar 31 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 Javascript
vue 中的 render 函数作用详解
Feb 28 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
15种PHP Encoder的比较
2007/03/06 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
深入学习Python中的装饰器使用
2016/06/20 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
python如何调用java类
2020/07/05 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
公司年会演讲稿范文
2014/01/11 职场文书
一夜的工作教学反思
2014/02/08 职场文书
爱心倡议书范文
2014/05/12 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
承诺保证书格式
2015/02/28 职场文书