首页 > 其他分享 >vue中watch监听计算总价总数量

vue中watch监听计算总价总数量

时间:2023-02-20 16:14:03浏览次数:41  
标签:vue name res price watch item num data 监听

应用场景,当购物车添加了一个商品时,购物车的总数和其总价格需重新计算

这里有4个商品,现在对任意一个进行添加或删除总价格和总数量都要进行变化

1. 定义变量

dataList: [
    {name: '圆面', price: 5, num: 0},
    {name: '宽面', price: 12.3, num: 0},
    {name: '挂面', price: 6, num: 0},
    {name: '方便面', price: 7, num: 0}
],
totalPrice: 0, // 总价
totalWeight: 0, // 总重量

2. 渲染页面

<view class="noodle-list">
                <view class="list" v-for="(item, index) in dataList" :key="index">
                    <view class="list-info flex-a">
                        <image src="../../../static/images/cover.png" mode="aspectFill"></image>
                        <view class="noodle-info">
                            <view class="noodle-name">{{ item.name }}</view>
                            <view class="count-box flex-s">
                                <view class="weight">¥:{{ item.price }}/斤</view>
                                <view class="select flex-c" @tap="count(2, item)" v-if="item.num === 0">+</view>
                                <view class="count flex-a" v-else>
                                    <view class="reduce" @tap="count(1, item)">-</view>
                                    <view class="num">{{ item.num }}</view>
                                    <view class="add" @tap="count(2, item)">+</view>
                                </view>
                            </view>
                        </view>
                    </view>
                </view>
            </view>
            <view class="total-box flex-s">
                <view class="total-price flex-a">
                    <text>合计:</text>
                    <view class="total" v-if="totalPrice && totalWeight">
                        <view class="total-weight">{{ totalWeight }}(斤)</view>
                        <view class="price">¥{{ totalPrice }}</view>
                    </view>
                    <view v-else>请添加商品</view>
                </view>
                <view class="buy" @tap="buy">下单</view>
            </view>

3. 添加/减少

count(item, data) {
    if(item === 1) {
      if(data.num > 0) {
          data.num --;
        }
    }else if(item === 2) {
      data.num ++;
    }
},    

 

4. watch监听

dataList: {
    immediate: true,
    deep: true,
    handler(newList) {
    // newList是改变后的新数组
    this.totalPrice = 0;
    this.totalWeight = 0;
    newList.forEach(res => {
      this.totalPrice += res.num * res.price
      this.totalWeight += res.num
    })
  }
}

 

 

 

 

  

 

 


标签:vue,name,res,price,watch,item,num,data,监听
From: https://www.cnblogs.com/axdbk/p/17137759.html

相关文章

  • vue3中对于/deep/和::v-deep的警告信息处理
    目前发现两处警告信息:::v-deepusageasacombinatorhasbeendeprecated.Use:deep()instead.the>>>and/deep/combinatorshavebeendeprecated.Use:deep()......
  • Vue2 项目中添加 vite
    正常创建Vue2项目使用命令方式vuecreateprojectname或使用图形方式vueui安装vite相关组件安装组件,此组件是开发依赖包。npminstallvitevite-plugin-vue2......
  • vue 配置【详解】 vue.config.js ( 含 webpack 配置 )【转载】
    使用 vue-cli3.x以上的脚手架创建的vue项目不再有build文件夹,若需要进行相关配置,需在项目目录下新建文件 vue.config.js常用配置1//后端服务器地址2letur......
  • vue组件
    1组件其他#根组件和组件一些问题 -newVue()--->管理div--->根组件-自己再定义的全局,局部是组件-组件有自己的html,css,js---》数据,事件。。。。-在组......
  • Vue Cli配置参考一vue.config.js【转载】
    vue.config.js是一个可选的配置文件,如果项目的(和package.json同级的)根目录中存在这个文件,那么它会被@vue/cli-service自动加载。这个文件应该导出一个包含了选项......
  • 若依框架 -------- vue3+element-plus(四)
    后端管理系统,前后端分离的框架若依管理后台,来看下vue3+element-plus版本。实现一个页面定义api请求gatewayPath分布式网关定义importrequestfrom'@/utils/request'impor......
  • 若依框架 -------- vue3+element-plus(三)
    后端管理系统,前后端分离的框架若依管理后台,来看下vue3+element-plus版本。静态文本assetsassets静态img、svg、stylemain.js ​​import'@/assets/styles/index.scss'/......
  • 若依框架 -------- vue3+element-plus(二)
    后端管理系统,前后端分离的框架若依管理后台,来看下vue3+element-plus版本。API后台接口请求user.js//查询用户列表exportfunctionlistUser(query){returnrequest({......
  • vue中created mounted 与 异步任务
    两个生命周期created:data属性,methods属性,watch监听等都初始化好了,也就是可以使用了。mounted:已经把内存中编译好的模板替换到页面中,也就是视图层已渲染成最新的,vue......
  • Rpc-实现Client对ZooKeeper的服务监听
    1、前言在上一篇文章中,完成了ZooKeeper注册中心,添加了一个简单的本地缓存但是,存在一些问题:当本地缓存OK,ZooKeeper对应服务有新的实例时,本地缓存不会自动更新当ZooKeep......