Vue 简单实例 购物车4

摘要:
'check':'']"˃exportdefault{methods:{//点击全选和反选getAllChecked(){letflag=!this.allCheck}}}我们发现每个商品都选中了才会变为全选,反之有一个商品没有选中,则不是全选状态。

1、查看代码发现选中全选是由 check 样式控制的,所以我们要添加一个变量来控制是否全选:

<span :class="['checkbox-btn', 'item-check-btn', allCheck ? 'check' : '']">

<script>export default{
  data() {
    return{
      allCheck: false, //是否全选
}
  },
}
</script>

2、给全选添加点击事件:

<a href="javascipt:;"@click="getAllChecked">
  <span :class="['checkbox-btn', 'item-check-btn', allCheck ? 'check' : '']">

<script>export default{
  methods: {
    //点击全选和反选
getAllChecked() {
      let flag = !this.allCheck
    }
  }
}
</script>

我们发现每个商品都选中了才会变为全选,反之有一个商品没有选中,则不是全选状态。

3、这里我们可以用计算属性来定义 allCheck :

//计算属性
computed: {
    allCheck() {
      //every 当数组中每一项都返回 true,整体才返回 true;有一项返回 false,整体就返回 false
      return this.cartList.every(item =>{
        returnitem.checked
      })
    }
}

注意:上面 data 里的 allCheck 变量记得注释掉,改用计算属性。

4、继续getAllChecked() 方法:

//点击全选和反选
getAllChecked() {
      let flag = !this.allCheck
      this.cartList.forEach(item =>{
        item.checked =flag
      })
},

这时点击全选就可以全部选中商品,反之则全部没选中。

5、同时选中商品时计算总价

同样定义计算属性,计算选中商品的价格总计:

<div class="item-total">总价:
     <span class="total-price">{{ totalPrice | curreney }}</span>
</div>

<script>export default{
  //计算属性
computed: {
    //总价
totalPrice() {
      let money = 0
      this.cartList.forEach(item =>{
        if(item.checked) {
          money +=item.productNum *item.productPrice
        }
      })
      returnmoney
    }
  }
}
</script>

此时选中商品或改变商品数量,对应的总价随之改变。

免责声明:文章转载自《Vue 简单实例 购物车4》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[学习记录]linux下anaconda的运用Force.com微信开发系列(四)申请Access Token及自定义菜单之创建菜单下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue项目引用百度地图并实现搜索定位等功能 Marco

Tip:本篇文章为案例分析,技术点较多,所以篇幅较长,认真阅览的你一定会学到很多知识。 前言:百度地图开放平台 给开发者们提供了丰富的地图功能与服务,使我们的项目中可以轻松地实现地图定位、地址搜索、路线导航等功能。本文给大家介绍如何在vue项目中引用百度地图,并设计实现简单的地图定位、地址搜索功能。 一、效果图及功能点 先来看一下效果图 效果图看不够? 点...

鼠标悬浮显示鼠标停留数据的内容 elementui + vue

先看效果图 直接上代码 <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane :label="speaker.abscissa[0]" name="first"> <div...

VUE 进阶

4. 通过axios实现数据请求vue.js默认没有提供ajax功能的。 所以使用vue的时候,一般都会使用axios的插件来实现ajax与后端服务器的数据交互。 注意,axios本质上就是javascript的ajax封装,所以会被同源策略限制。 下载地址: https://unpkg.com/axios@0.18.0/dist/axios.js ht...

vue 移动端车牌键盘

1.npm install input-plate-number --save 样式可以,键盘相对严谨,但是输入有bug, 2.npm installvue-carplate --save 插件样式个人看来是最好看的,键盘的输入最严谨,但是没有新能源车牌的选项, 3.https://github.com/Pinenutss/LicensePlate 插件是...

vue jsonp (转载)

vue 使用 jsonp 请求数据 vue请求数据的时候,会遇到跨域问题,服务器为了保证信息的安全,对跨域请求进行拦截,因此,为了解决vue跨域请求问题,需要使用jsonp。 安装jsonp npm install --save vue-jsonp 引入 安装完成之后在main.js中引入jsonp import VueJsonp from 'v...

Vue中CodeMirror组件设置高度自适应

写在前面 由于项目中需要使用代码编辑器插件,于是找到了CodeMirror,这个插件功能十分强大,官网地址:https://codemirror.net/ 但是,当把插件集成到项目时,发现编辑器显示高度是默认的300px,这个高度显然是不友好的,所以需要将高度改为自适应。 查看官方文档说是将height设置为auto即可,但是加上知乎发现这个样式根本不起...