最近在公司项目中使用vue2.0做开发,在使用checkbox时遇到了一些问题,首先我们先了解一下需求。

如上如所示,在上方复选框被点击时,更改下方p标签的文本内容为:复选框已被选中。并将p标签文字颜色改为红色。

面对如此简单的需求我第一个想到的就是通过点击事件判断复选框状态,更改文本及css样式,代码如下:

<template>
<div id="secert-main">
<label for="label" @click.stop="clickMe">
<input type="checkbox" id="label" v-model="ckeckVal" >点我
</label>
<p>复选框没有被选中</p>
</div>
</template>
<script type="text/javascript">
export default {
data() {
return {
ckeckVal:false
}
},
methods:{
clickMe(){
var that=this;
console.log(that.ckeckVal);
}
}
}
</script>
<style type="text/css">
.red{
color: red;
}
</style>

我们利用v-model来绑定checkbox的值,可以发现,当我们选中之后效果如下图:

@click的理解

打印的结果为false,但我们明明是选中状态,结果应该为true才对,为什么会这样呐,在vue的官方文档中我找到了下面的一段话:

在上面的描述中,我们可以将我们的代码理解为下面的内容:

可以用v-on指令监听click事件,并在触发时运行 console.log(that.ckeckVal);

仔细阅读这句话之后,我们发现一个关键词是:触发时,也就是说上面代码中clickMe的执行时间为点击的那一瞬间,而不是点击之后。而点击的那一瞬间复选框的值也确实是``false,这也就解释了为什么我们得到的结果为false。 明白这一点之后我们将@click换成@change`,点击复选框之后得到如下结果:

@change的理解

结合在官网中对于监听事件的解释,我们对@change的理解为:

可以用v-on指令监听change事件,并在状态改变后运行 console.log(that.ckeckVal);

总结

click事件的触发是在点击的那一刻,而change事件是在状态改变之后触发。


最后根据需求完善我们的代码:

<template>
<div id="secert-main">
<label for="label" @change="clickMe">
<input type="checkbox" id="label" v-model="ckeckVal" >点我
</label>
<p :class="ckeckClass">复选框没有被选中</p>
</div>
</template>
<script type="text/javascript">
export default {
data() {
return {
ckeckVal:false,
ckeckClass:'',
ckeckInfo:'复选框没有被选中'
}
},
methods:{
clickMe(){
var that=this;
if(that.ckeckVal){
that.ckeckInfo='复选框被选中了';
that.ckeckClass='red';
}else{
that.ckeckInfo='复选框没有被选中';
that.ckeckClass='';
}
}
}
}
</script>
<style type="text/css">
.red{
color: red;
}
</style>

以上仅供学习交流使用,如有错误,欢迎指正,谢谢!

vue2.0中ckeckbox(复选框)的使用心得,及对click事件和change的理解的更多相关文章

  1. nodetree中 前面复选框禁用插件

    nodetree中 前面复选框的去掉插件 extendTreeCheck.js /** * tree方法扩展 * 作者:小雪转中雪 */ $.extend($.fn.tree.methods, { / ...

  2. python QQTableView中嵌入复选框CheckBox四种方法

    搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...

  3. ZH奶酪:纯CSS自定义Html中Checkbox复选框样式

    原文链接:http://www.lrxin.com/archives-683.html 首先看下效果: 点击演示地址查看实例. 首先,需要添加一段CSS隐藏所有的Checkbox复选框,之后我们会改变 ...

  4. jQuery+SpringMVC中的复选框选择与传值

    一.checkbox选择 在jQuery中,选中checkbox通用的两种方式: $("#cb1").attr("checked","checked& ...

  5. 在word中做复选框打对勾钩

    在word中做复选框打对勾钩 现在终于搞明白正确的操作方法 一.你在word里输入2610,按alt+X就能出 空checkbox 你在word里输入2611,按alt+X就能出 打了勾的checkb ...

  6. QTableView中嵌入复选框CheckBox 的四种方法总结

    搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...

  7. 如何在select下拉列表中添加复选框?

    近来在给一个公司做考试系统的项目,遇到的问题不少,但其中的几个让我对表单的使用颇为感兴趣,前端程序员都知道,下拉列表有select标签,复选框有checkbox,但是两者合在一起却少有人去研究,当时接 ...

  8. 在php中验证复选框

    PHP接收多个同名复选框信息不像ASP那样自动转换成为数组,这给使用带来了一定不便.但是还是有解决办法的,就是利用javascript做一下预处理.多个同名复选框在javascript中还是以数组的形 ...

  9. asp.net,根据gridview 中checkbox复选框选中的行对数据库进行操作

    在asp.net中,使用checkbox,对gridview添加复选框. 多选数据行后,根据已选数据,对原数据进行多条语句查询. string sql = "Select * from 表 ...

随机推荐

  1. 根据从redis缓存的数据查询出来,在从数据库中取出所有的数据,俩个数据进行比较,去掉重复,剩下库中新插入的数据,取出新数据,然后把redis中的缓存数据清空把从数据库中查出来的所有数据放到redis缓存中

    参考代码: public String getNewCenter(HttpServletRequest request,HttpServletResponse resonse){ JSONObject ...

  2. CSS之flex兼容

    我觉得写的很好的文章,但是我又没有时间去整理的. https://blog.csdn.net/u010130282/article/details/52627661 百分比 是在宽度自适应的时候要用 ...

  3. 1088 Rational Arithmetic(20 分)

    For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate the ...

  4. python模块之datetime方法详细介绍

    datetime Python提供了许多内置模块用于操作时间日期,如calendar,time,datetime,这篇文章主要是对datetime进行汇总,datetime模块的借口实现原则更加直观, ...

  5. Nodejs 连接 mysql时报错 Error: Cannot enqueue Query after fatal error

    解决办法,参考:https://github.com/chill117/express-mysql-session/issues/18 我们只需在实例化SessionStore的时候,配置useCon ...

  6. Java面向对象_接口应用——策略模式

    概念:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化. 接口抽象的就是某种方法. OO设计原则:1.面向接口编程  2.封装变化  3.多用 ...

  7. Unity GL 画圆

    Unity下GL没有画圆的函数,只能自己来了. 如果能帮到大家,我也很高兴. 虽然没有画圆的函数,但是能画直线,利用这一点,配合微积分什么的,就可以画出来了.反正就是花很多连在一起的直线,每条直线足够 ...

  8. Windows10 zip安装 MySQL8.0.12

    其实问题不大,就是win10永远有点奇葩的地方. 下载,解压,命名什么的我就不说了. 一 环境变量方便cmd使用mysql MYSQL_HOME = xxx // 就是安装的路径 Path = %MY ...

  9. webpack.config.js====引入Jquery库文件

    1. 安装 cnpm install --save jquery expose-loader 2. 在webpack.config.js中配置 Jquery库是使用的webpack的一个插件Provi ...

  10. JAVA 面试重点知识个人总结

    一.集合: 1 .Collection(是java.util下的接口) 和 Collections(是java.util下的类). 2 .List, Set,是否继承自Collection接口,Map ...