微信小程序之购物车和父子组件传值及calc的注意事项

在做微信小程序时,觉得小组里对购物车的实现不是很完美,就自己尝试的写了下,然后用到了父子组件传值,父子组件传值的话,和vue框架上是非常相似的,以及calc这个css函数,calc有个注意点,自己不怎么用,一时间有差点忘了,这里记录下

1.效果图

2.子组件实现

  • 要实现图中删除的效果,使用组件的形式更好做点,我当时本想直接在pages里实现,不过结果就是,滑动时,所有的商品都显示了删除按钮,除非用数组将每个商品要移动的距离存储起来,不过这样的话就很麻烦,所以我也是用组件来实现的
  • 关于微信组件,可以直接点击链接访问官网查看自定义组件
  • 子组件index.wxml
<view class="commodityItem" bindtouchstart="handleTouchStart" bindtouchmove="handleTouchMove" style="transform:translateX({
  {-rightSpace}}px)">
  <view class="selectedBtn" bindtap="handleSelect" data-is-selected="{
  {commodity.isselected}}">
    <view class="noSelected" wx:if="{
  {commodity.isselected==0}}"></view>
    <image class="selectedImg" wx:else src="/images/selected.png"></image>
  </view>
  <view class="commodityInfo">
    <view class="commodityImg">
      <image src="{
  {commodity.image}}"></image>          
    </view>
    <view class="commodityTitle">
      <view class="title">{
  {commodity.title}}</view>
      <view class="standard">规格:{
  {commodity.standard?commodity.standard:'无'}}</view>
      <view class="count">
        <view class="price">¥{
  {commodity.price}}</view>
        <view class="commodityNum">
          <i-input-number value="{
  {selectedNum}}" min="1" max="{
  {commodity.stock}}" bindchange="numChange" />
        </view>
      </view>
    </view>
  </view>
  <view class="deleteBtn">
    <image class="deleteImg" src="/images/delete.png"></image>
    <text class="deleteText">删除</text>
  </view>
</view>
  • 子组件index.wxss
/* 商品 */
.commodityItem{
  display: flex;
  position: relative;
  padding: 10rpx 24rpx 20rpx 30rpx;
  box-sizing: border-box;
  background: #fff;
  transition: all .5s;
}
/* 选择按钮 */
.selectedBtn{
  display: flex;
  align-items: center;
  width: 80rpx;
}
.noSelected{
  width: 46rpx;
  height: 46rpx;
  border-radius: 50%;
  border: 1px solid #ef5225;
}
.selectedBtn .selectedImg{
  width: 50rpx;
  height: 50rpx;
}
/* 商品信息 */
.commodityInfo{
  display: flex;
  width: calc(100% - 80rpx);
}
.commodityImg{
  margin-right: 18rpx;
  width: 220rpx;
  height: 220rpx;
}
.commodityImg image{
  width: 100%;
  height: 100%;
  vertical-align: middle;  
}
/* 商品title */
.commodityTitle{
  width: calc(100% - 220rpx);
}
.title{
  display: -webkit-box;
  width: 100%;
  height: 70rpx;
  line-height:35rpx;
  font-size: 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的微信小程序实现加入购物车功能的代码示例: 1. 在 wxml 文件中添加一个“加入购物车”的按钮和商品数量的输入框: ``` <!--商品数量--> <input type="number" value="{{goodsNum}}" bindinput="bindGoodsNum" /> <!--加入购物车按钮--> <button bindtap="addCart">加入购物车</button> ``` 2. 在 js 文件中添加商品数量和加入购物车的事件处理函数: ``` Page({ data: { // 商品数量 goodsNum: 1, }, // 输入框输入商品数量 bindGoodsNum(e) { this.setData({ goodsNum: e.detail.value }) }, // 加入购物车 addCart() { let goodsNum = this.data.goodsNum; // 将商品数量和商品信息存入本地存储或者数据库中 // ... wx.showToast({ title: '加入购物车成功', icon: 'success', duration: 2000 }) } }) ``` 3. 在 app.json 文件中添加购物车页面的路由: ``` { "pages": [ "pages/index/index", "pages/cart/cart" ], "window": { "navigationBarTitleText": "微信小程序购物车示例" }, "tabBar": { "list": [ { "pagePath": "pages/index/index", "text": "首页" }, { "pagePath": "pages/cart/cart", "text": "购物车" } ] } } ``` 4. 在购物车页面的 wxml 文件中添加购物车列表: ``` <scroll-view scroll-y="true" style="height: 100%;"> <view wx:for="{{cartList}}" wx:key="index"> <view>{{item.goodsName}}</view> <view>数量:{{item.goodsNum}}</view> </view> </scroll-view> ``` 5. 在购物车页面的 js 文件中获取购物车列表: ``` Page({ data: { // 购物车列表 cartList: [] }, // 页面显示时获取购物车列表 onShow() { // 从本地存储或者数据库中获取购物车列表 // ... this.setData({ cartList: cartList }) } }) ``` 以上是一个简单的微信小程序实现加入购物车功能的代码示例,具体实现方式可以根据自己的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值