购物车页面为什么不显示数据

购物车页面为什么不显示数据

请老师帮助查看一下代码,谢谢:

<template>

    <div class="products">

        <h4 class="shopname">{{shopName}}</h4>

        <template v-for="item in productList" :key="item._id">

            <div class="product_item" v-if="item.count > 0">

                <img :src="item.imgUrl">

                <div class="product_detail">

                    <h4>{{item.name}}</h4>

                    <div class="price_num">

                        <div class="product_price"><span>¥{{item.price}}</span><span>x{{item.count}}</span></div>

                        <div class="product_num">¥{{(item.price * item.count).toFixed(2)}}</div>

                    </div>

                </div>

            </div>

        </template>

    </div>

    <Docker :currentIndex="1"/>

</template>


<script>

import {useRoute} from 'vue-router'

import Docker from '../../components/Docker.vue'

import {useCommonCartEffect} from '../../effects/cartEffects'


export default {

    name:'CartList',

    components:{ Docker },

    setup(){

        const route = useRoute()

        const shopId = route.params.id

        const {productList, shopName } = useCommonCartEffect(shopId)

        return{productList, shopName }

    }    

}

</script>


<style lang="scss" scoped>

.products{width:100%; max-height: calc(100vh - .5rem); overflow-y: auto; margin:0 .18rem;}

.shopname{font-size: .16rem; margin-bottom: .16rem;}

.product_item{display: flex; margin-bottom: .16rem;}

.product_item img{width:.68rem; height: .68rem;}

.product_detail{margin-left:.16rem; flex: 1; overflow: hidden;} 

.product_detail h4{font-size: .14rem; margin-bottom: .1rem; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;}

.price_num{display: flex; align-items: center;}

.product_price{flex: 1;}

.product_price span{font-size: .14rem; color: #E93B3B; margin-right: .06rem;}

.product_num{width:.8rem;  font-size: .14rem; text-align: right;}

</style>


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,老师明白你的意思,但是代码中是通过路由参数获取对应的商品

https://img1.sycdn.imooc.com//climg/625693ed0914926105780086.jpg

购物车页面路由中没有参数就拿不到数据。

建议:直接获取state中存储的数据就好了,例如:

拿到cartList数据

https://img1.sycdn.imooc.com//climg/625694230959470708050648.jpg

内容外层再包裹一层遍历

https://img1.sycdn.imooc.com//climg/62569460099af66811300462.jpg

这样点击加、减会改变存储的数据,购物车中的数据也会改变

https://img1.sycdn.imooc.com//climg/62569482095c607d04460707.jpg

自己再测试下。

  • 慕数据5487037 提问者 #1

    嗯嗯,谢谢老师,我也刚找到了可以从localStorage.cartList里面获取购物车数据

    https://img1.sycdn.imooc.com//climg/6256990409bc582d01820234.jpg



    2022-04-13 17:33:58
好帮手慕星星 2022-04-13 16:18:53

同学你好,是在做这个作业吗?

https://img1.sycdn.imooc.com//climg/6256875109922edb11180267.jpg

购物车页面是这个页面吗?

https://img1.sycdn.imooc.com//climg/625686370928793902450075.jpg

是从哪里跳转到购物车页面呢?代码中用了路由的参数

https://img1.sycdn.imooc.com//climg/62568671094278d306460216.jpg

https://img1.sycdn.imooc.com//climg/6256869709c6f20f05650799.jpg

但是点击‘购物车’并没有id,也就获取不到数据。同学是怎么操作的呢?建议再描述一下。

如果是在做作业,写一个有固定数据的页面即可,祝学习愉快!

  • 提问者 慕数据5487037 #1

    是这个作业。这个数据只要是用户在shop页面点击“加”“减”符号添加到购物车这个数据就会产生,不一定是从哪个页面过来,而且这个数据是前端实时产生的不可能用固定数据。

    2022-04-13 16:26:45
好帮手慕星星 2022-04-13 15:22:54

同学你好, 这是哪个页面的代码呢?课程中好像没有effects/cartEffects这个文件,建议描述具体一些,便于帮助解决。

祝学习愉快~

  • 提问者 慕数据5487037 #1

    购物车页面,页面如下:

    import {useCommonCartEffect} from '../../effects/cartEffects',这个文件很多页面用到,比如订单确认页

    https://img1.sycdn.imooc.com//climg/62567b4909d0a01703630591.jpg

    2022-04-13 15:28:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师