好家伙,

继续完善购物车相应功能

1.如何实现全选和反全选

1.1.全选框的状态显示(父传子)

来一波合理分析:

在页面中,有三个商品中

三个商品中的第二个未选择,

我么使用一个计算属性(fullState)来遍历一遍三个商品的选择状态

遍历过程中发现第二个是false,另外两个为true

那么计算属性fullState的状态也是false了,

三个都是true,这个计算属性才是true

然后将这个值传给全选框的组件,

如果值是false

那么我看到的全选框就是灰色的

反之,如果值是true

那么全选框那个位置就是亮的

我们来添加一个计算属性来动态判断每一项的勾选状态

全选为true,

非全选为false

computed:{
//用于全选状态的计算属性
//动态计算出全选的状态是true还是false
fullState(){
return this.list.every(item=>item.goods_state)
}
},

在App.vue的组件调用中:

<Footer :isfull="fullState"
@full-change="getFullState"></Footer>

随后我们将这个值传给子组件

通过props传值

Footer.vue组件代码如下:

<template>
<div class="footer-container">
<!-- 左侧的全选 -->
<div class="custom-control custom-checkbox">
<!-- 全选框状态与isFull绑定 -->
<input type="checkbox"
class="custom-control-input"
id="cbFull"
:checked="isfull"
@change="fullChange" />
<label class="custom-control-label" for="cbFull">全选</label>
</div> <!-- 中间的合计 -->
<div>
<span>合计:</span>
<span class="total-price">¥{{ 0 }}</span>
</div> <!-- 结算按钮 -->
<button type="button" class="btn btn-primary btn-settle">结算({{ 0 }})</button>
</div>
</template> <script>
export default {
props:{
isfull:{
type:Boolean,
default:true
}
},
methods:{
//监听到全选状态的变化
fullChange(e){
this.$emit('full-change',e.target.checked)
}
}
}
</script> <style lang="less" scoped>
.footer-container {
font-size: 12px;
height: 50px;
width: 100%;
border-top: 1px solid #efefef;
position: fixed;
bottom: 0;
background-color: #fff;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px;
} .custom-checkbox {
display: flex;
align-items: center;
} #cbFull {
margin-right: 5px;
} .btn-settle {
height: 80%;
min-width: 110px;
border-radius: 25px;
font-size: 12px;
} .total-price {
font-weight: bold;
font-size: 14px;
color: red;
}
</style>

来看其中选择框的部分

<input type="checkbox"
class="custom-control-input"
id="cbFull"
:checked="isfull"
@change="fullChange" />

由全选框中的input把这个是否全选的状态渲染出来

接口定义:

props:{
isfull:{
type:Boolean,
default:true
}
},

至此,显示"是否全选"的功能实现了

1.2.点击全选框后,选择全部商品

再次点击,取消全择

大概的思路分析:

我们在子组件中拿到全选框的状态(e.target.checked),

然后,我们用一个自定事件(full-change)把这个状态传给父组件,

随后用一个方法(getFullState)把每一个商品的状态改为全选框的状态

最后Goods.vue组件中渲染出来的状态,自然就是全选框的状态了

上代码,来看看如何实现

Footer.vue组件勾选框:

<input type="checkbox"
class="custom-control-input"
id="cbFull"
:checked="isfull"
@change="fullChange" />

勾选框状态改变,触发方法fullChange,

methods:{
//监听到全选状态的变化
fullChange(e){
this.$emit('full-change',e.target.checked)
}
}

App.vue的组件调用中:

<Footer :isfull="fullState"
@full-change="getFullState"></Footer>

getFullState方法:

 getFullState(val){
console.log('在App中拿到了全选的状态')
this.list.forEach(item=>(item.goods_state = val))
}

此处val的值就是前面fullChange传过来的值(e.target.checked)

将所有商品的勾选状态改为全选框的值

于是,这个功能完成了

 

至此,全选功能完成,

第八十二篇:Vue购物车(三) 实现全选功能的更多相关文章

  1. 第三十二篇:vue的响应式原理

    好家伙 什么是响应式?比较官方的回答: Vue.js 的核心包括一套"响应式系统". "响应式",是指当数据改变后,Vue 会通知到使用该数据的代码. 例如,视 ...

  2. 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探

    SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...

  3. Spring Cloud第十二篇 | 消息总线Bus

    ​ ​本文是Spring Cloud专栏的第十二篇文章,了解前十一篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring ...

  4. 第十二篇 SQL Server代理多服务器管理

    本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...

  5. 第十二篇 Integration Services:高级日志记录

    本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...

  6. Python开发【第二十二篇】:Web框架之Django【进阶】

    Python开发[第二十二篇]:Web框架之Django[进阶]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...

  7. 【译】第十二篇 Integration Services:高级日志记录

    本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...

  8. 【译】第十二篇 SQL Server代理多服务器管理

    本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...

  9. 解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译)

    解剖SQLSERVER 第十二篇   OrcaMDF 行压缩支持(译) http://improve.dk/orcamdf-row-compression-support/ 在这两个月的断断续续的开发 ...

随机推荐

  1. Vue路由的模块自动化与统一加载

    首先呢,我们来看看一般项目路由是怎么划分的. 为什么这么划分呢?如果大项目业务非常多,单纯的单页面很难维护,我们只有这样规范化,才能高效率. 模块自动化与统一加载的好处: 规范化命名(模块名.业务名. ...

  2. 关闭windows更新、设置自启动、提高开发机性能

    做Java开发的朋友都知道,每次开机启动一堆的软件和工具,包括未写完的文档,是非常花时间的,加上一桌面的快捷方式,往往不是那么容易直接找到.windows的自动更新往往在凌晨自动启动,导致很多软件被异 ...

  3. Redis主从复制+Keepalived+VIP漂移实现HA高可用技术之详细教程

    1.大家可以先看我的单台Redis安装教程,链接在此点击Redis在CentOS for LInux上安装详细教程 2.第一台redis配置,是正常配置.作为MASTER主服务器,第二台redis的配 ...

  4. NC207028 第k小数

    NC207028 第k小数 题目 题目描述 给你一个长度为 \(n\) 的序列,求序列中第 \(k\) 小数的多少. 输入描述 多组输入,第一行读入一个整数 \(T\) 表示有 \(T\) 组数据. ...

  5. HTML知识点概括——一篇文章带你完全掌握HTML

    HTML知识点概括 前端三件套分别是HTML3,CSS5,JavaScript 稍微介绍一下W3C标准: 结构化标准语言(HTML) 表现标准语言(CSS) 行为标准(DOM,JavaScript) ...

  6. Elasticsearch深度应用(上)

    索引文档写入和近实时搜索原理 基本概念 Segments in Lucene 众所周知,Elasticsearch存储的基本单元是shard,ES种一个index可能分为多个shard,事实上每个sh ...

  7. Map集合概述和Map常用子类

    概述java.util.Map接口 Map<K,V> 有两个泛型 类型参数:K - 此映射所维护的键的类型V - 映射值的类型 特点:1.Map集合是双列集合,一个元素包含两个值,一个是k ...

  8. Solution -「校内题」Xorequ

    0x00 前置芝士 数位dp考试里出现的小神题?? 显然考场会选择打表找规律. 数位dp + 矩阵快速幂 0x01 题目描述 给定正整数 \(n\),现有如下方程 \(x \bigoplus 3x = ...

  9. P2532 [AHOI2012]【一本通提高组合数学】树屋阶梯

    [AHOI2012]树屋阶梯 题目描述 输入格式 一个正整数N( 1 ≤ N ≤ 500 1\le N \le 500 1≤N≤500),表示阶梯的高度. 输出格式 一个正整数,表示搭建方法的个数.( ...

  10. 基于NoCode构建简历编辑器

    基于NoCode构建简历编辑器 基于NoCode构建简历编辑器,要参加秋招了,因为各种模版用起来细节上并不是很满意,所以尝试做个简单的拖拽简历编辑器. 描述 Github | Resume DEMO ...