浅谈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 EXCEL 操作类代码
Jul 30 Javascript
基于javascript如何传递特殊字符
Nov 30 Javascript
jQuery 遍历map()方法详解
Nov 04 Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 Javascript
JavaScript学习笔记--常用的互动方法
Dec 07 Javascript
基于jQuery实现简单人工智能聊天室
Feb 10 Javascript
自定义PC微信扫码登录样式写法
Dec 12 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
Jun 18 jQuery
在antd4.0中Form使用initialValue操作
Nov 02 Javascript
浅谈克隆 JavaScript
Nov 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
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
json的使用小结
2016/06/08 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python File readlines() 使用方法
2018/03/19 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
迎八一活动主题
2014/01/31 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
用python画城市轮播地图
2021/05/28 Python
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js