浅谈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实现运行代码需要刷新的解决方法
Aug 18 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
Jan 01 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
Sep 19 Javascript
使用jQuery插件创建常规模态窗口登陆效果
Aug 23 Javascript
javaScript 页面自动加载事件详解
Feb 10 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
基于Vuejs实现购物车功能
Aug 02 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 Javascript
jQuery选择器之属性筛选选择器用法详解
Sep 19 jQuery
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
用Node提供静态文件服务的方法
Jul 06 Javascript
vue基于两个计算属性实现选中和全选功能示例
Feb 08 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 表单数据的获取代码
2009/03/10 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
二招解决php乱码问题
2012/03/25 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
javascript 函数使用说明
2010/04/07 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
JavaScript类的写法
2016/09/17 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
python实现百万答题自动百度搜索答案
2018/01/16 Python
python输出带颜色字体实例方法
2019/09/01 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
keras topN显示,自编写代码案例
2020/07/03 Python
Python常用类型转换实现代码实例
2020/07/28 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
荟萃全球保健品:维他购
2018/05/09 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
大客户销售经理职责
2013/12/04 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
敬老模范事迹
2014/05/21 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
Mysql 文件配置解析介绍
2022/05/06 MySQL