浅谈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实现的图片点击滚动效果
Apr 29 Javascript
简单的jQuery入门指引
Jul 28 Javascript
漂亮! js实现颜色渐变效果
Aug 12 Javascript
Bootstrap基本组件学习笔记之分页(12)
Dec 08 Javascript
jQuery设计思想
Mar 07 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
Jun 01 Javascript
在Vue中如何使用Cookie操作实例
Jul 27 Javascript
详解Vue微信公众号开发踩坑全记录
Aug 21 Javascript
Vue写一个简单的倒计时按钮功能
Apr 20 Javascript
vue实现分页组件
Jun 16 Javascript
vue store之状态管理模式的详细介绍
Jun 13 Javascript
详解微信小程序轨迹回放实现及遇到的坑
Feb 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中的正规表达式(二)
2006/10/09 PHP
zend framework多模块多布局配置
2011/02/26 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
Vue性能优化的方法
2020/07/30 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python制作websocket服务器实例分享
2016/11/20 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
python实现顺序表的简单代码
2018/09/28 Python
python实现一组典型数据格式转换
2018/12/15 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
python中rb含义理解
2020/06/18 Python
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
导师就业推荐信范文
2014/05/22 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
年终工作总结范文2014
2014/11/27 职场文书
医院合作意向书范本
2015/05/08 职场文书
中学音乐课教学反思
2016/02/18 职场文书
导游词之西安骊山
2019/12/03 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python