m0_69233734 2024-06-22 00:39 采纳率: 61.9%
浏览 2
已结题

图片中的未定义史什么原因造成的

img

// pages/shopcar/shopcar.js
Page({

  data: {
    carts:// 购物车内商品数据
    [
     
      { id: 1, title: '华为 HUAWEI P10 全网通 4GB+64G 曜石黑 移动联通电信4GB手机', num: 4, price: 4500, selected: true ,url:"//img13.360buyimg.com/n7/jfs/t1/230981/8/20635/66984/666c35b2F95ad1b68/8d6934082a2560b7.jpg"},
      { id: 2, title: 'Apple苹果 全网通 4GB+64G 曜石黑 移动联通电信4GB手机', num: 1, price: 6800, selected: true ,url:"//img10.360buyimg.com/n7/jfs/t1/234248/16/5432/64755/656ec63eF2e9ab3e9/780764de97d4c7be.jpg"},
      { id: 3, title: '小米 全网通 4GB+64G 曜石黑 移动联通电信4GB手机', num: 2, price: 4800, selected: true ,url:"//img12.360buyimg.com/n7/jfs/t1/235244/16/20663/77823/6671432bF61e47f63/af43ca9d8856f310.jpg"}
    ],
    //  hasList: tue,          // 列表是否有数据
    totalPrice: 0,           // 总价,初始为0
    selectAll: true,    // 全选状态,默认不全选
    selectNum: 0         //选中的件数

  }
  //计算总价格
  , totlePrice: function () {
    let carts = this.data.carts;
    let total = 0;
    let num = 0;
    for (let i = 0; i < carts.length; i++) {         // 循环列表得到每个数据
      if (carts[i].selected) {                   // 判断选中才会计算价格
        total += carts[i].num * carts[i].price;
        num += carts[i].num;
      }
    }
    this.setData({
      selectNum: num,
      totalPrice: total.toFixed(2)
    });
  }
  /**
   * 生命周期函数--监听页面显示
   */
  , onShow: function () {
    this.totlePrice()
  }
  //选中反选
  , selected: function (e) {
    const index = e.currentTarget.dataset.num;
    let carts = this.data.carts;
    let selectAll = this.data.selectAll;
    let count = 0;
    carts[index].selected = !carts[index].selected;
    //判断全选状态
    for (let i = 0; i < carts.length; i++) {
      if (carts[i].selected == true) {
        count++;
      }
    }
    if (count == 3) {
      selectAll = true;
    } else {
      selectAll = false;
    }
    this.setData({
      carts: carts,
      selectAll: selectAll
    });
    this.totlePrice();
  }
  //全选
  , selectedAll: function () {
    let selectAll = this.data.selectAll;   // 是否全选状态
    selectAll = !selectAll;
    let carts = this.data.carts;

    for (let i = 0; i < carts.length; i++) {
      carts[i].selected = selectAll;    // 改变所有商品状态
    }
    this.setData({
      selectAll: selectAll,
      carts: carts
    });
    this.totlePrice();     // 获取总价
  }
  //增加
  ,addNum : function(e){
    const index = e.currentTarget.dataset.num;
    let carts = this.data.carts;
    let num = carts[index].num;
    num = num + 1;
    carts[index].num = num;
    this.setData({
      carts: carts
    });
    this.totlePrice();
  }
  //减少
  ,subNum : function(e){
    const index = e.currentTarget.dataset.num;
    let carts = this.data.carts;
    let num = carts[index].num;
    if (num <= 1) {
      return false;
    }
    num = num - 1;
    carts[index].num = num;
    this.setData({
      carts: carts
    });
    this.totlePrice();
  },

  gotoOrders(){
    getApp().globalData.someData = totalPrice;
    wx.switchTab({
      url: `/pages/orders/orders`,
    })
  },
  
 
})

<!--pages/detail/detail.wxml-->
<view class="list" wx:for="{{carts}}" wx:key="*this">
  <view class="choose">
    <view class="option {{item.selected == true?'selected':'selected1'}}" data-num="{{index}}" bindtap="selected" ></view>
  </view>
  <view class="imgages">
    <image class="navimg" src="{{item.url}}"></image>
  </view>
  <view class="info">
    <text class="title" >{{item.title}}</text>
    <text class="specify">重量:0.506kg; 规格:曜石黑,64GB</text>
    <text class="charge"><text>{{item.price}}</text></text>
    <view class="buy-num">
      <text class="add" bindtap="addNum" data-num="{{index}}">+</text>
      <text class="goodsNum">{{item.num}}</text>
      <text class="sub" bindtap="subNum" data-num="{{index}}">-</text>
    </view>
  </view>
</view>
<!--底部-->
<view class="footer">
  <view class="allchoice choose">
    <view class="option {{selectAll == true?'selectedall':'selected1'}}" bindtap="selectedAll"></view>全选
  </view>
  

  <view class="gotonext" bind:tap="gotoOrders">结算({{selectNum}}件)</view>
  
  <view class="total">总计:
    <text class="money">¥{{totalPrice}}</text>
     <text class="other">不含运费,已优惠50.00</text>
  </view>
  
</view>

// pages/orders/orders.js
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    let totalPrice = getApp().globalData.someData;

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

<!--pages/orders/orders.wxml-->
<view class="payprice">
  <text>需支付金额</text>
  <view>¥{{totalPrice}}</view>
</view>


为什么图片中的价格为定义

  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-06-22 08:39
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据你提供的代码和描述,图片中价格未定义的问题可能由以下几个原因造成:

    1. 全局数据未正确设置:在pages/shopcar/shopcar.js中,你尝试将totalPrice存储到全局数据getApp().globalData中,但是使用的键是someData而不是totalPrice。你需要确保存储和获取使用相同的键。

      // 存储到全局数据时使用 totalPrice 作为键
      getApp().globalData.totalPrice = this.data.totalPrice;
      
    2. onLoad函数未正确赋值:在pages/orders/orders.jsonLoad函数中,你从getApp().globalData获取数据,但是没有将获取的值赋给data对象,导致totalPrice没有在页面数据中定义。

      // 在 onLoad 函数中正确赋值
      onLoad(options) {
        this.setData({
          totalPrice: getApp().globalData.totalPrice
        });
      }
      
    3. 数据绑定错误:确保在orders.wxml中使用的数据绑定是正确的。你的代码中使用的是{{totalPrice}},这应该是正确的,但需要确认totalPrice确实存在于页面的data对象中。

    4. 页面数据更新问题:如果在pages/orders/orders.js中正确设置了totalPrice,但页面没有更新,可能需要检查是否有其他地方的代码影响了数据的更新,或者确认没有其他的逻辑错误导致数据未能正确显示。

    5. 页面生命周期问题:确保在正确的生命周期函数中进行数据的获取和设置。onLoad是在页面加载时调用的,适合进行数据的初始化。

    6. 数据类型问题:如果totalPrice的数据类型不正确,也可能导致显示问题。确保totalPrice是一个数字类型。

    7. 调试和日志:在onLoad函数中添加一些调试日志,打印出从全局数据中获取的totalPrice值,以确保它包含了预期的数据。

    修复建议:

    • 确保在pages/shopcar/shopcar.js中正确存储totalPrice到全局数据。
    • pages/orders/orders.jsonLoad函数中,确保获取全局数据并正确设置到页面的data对象。
    • 检查是否有其他代码或逻辑错误影响数据的显示。

    如果上述步骤仍然无法解决问题,建议使用调试工具逐步跟踪和审查代码执行流程,查找问题所在。

    参考链接:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月30日
  • 已采纳回答 6月22日
  • 创建了问题 6月22日

悬赏问题

  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys
  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC