余大侠在劈柴 2022-09-11 09:47 采纳率: 100%
浏览 158
已结题

微信小程序如何把一个页面的某个数据传到另一个页面去

在首页明细这里,通过相加后变化数据的支出部分,将他的数据动态的传递给另一个页面,麻烦用代码讲讲,因为支出总额要随下面增加的账单而变化,用全局变量能实现吗?

img

img

  • 写回答

8条回答 默认 最新

  • 林一怂儿 前端领域新星创作者 2022-09-13 23:19
    关注

    Hi~ 少年我又带着不是最优解的案例来了。
    简陋的效果:

    img

    粗糙的代码:
    index/index.wxml

    <view>总支出: {{totalExpenditure}}</view>
    <view>支出条目</view>
    <view wx:for="{{billFlow}}" wx:key="unique">
      {{item.content}} {{item.price}}</view>
    

    index/index.js

    const app = getApp()
    
    Page({
      data: {
        totalExpenditure: 0,
        billFlow: []
      },
      onShow() {
        this.setData({
          totalExpenditure: app.totalExpenditure(),
          billFlow: app.billFlow
        })
      }
    })
    

    index2/index.wxml

    <view>剩余预算: {{remainingBudget}}</view>
    <view>本月预算: {{budget}}</view>
    <view>本月支出: {{totalExpenditure}}</view>
    
    <view bindtap="pay" wx:for="{{goods}}" wx:key="unique" data-price="{{item.price}}" data-content="{{item.content}}">{{item.content}} {{item.price}}</view>
    

    index2/index.js

    const app = getApp()
    
    Page({
      data: {
        totalExpenditure: 0,
        remainingBudget: 0,
        budget: 0,
        billFlow: [],
        goods: [
          {
            content: '棒棒糖',
            price: 1,
          },
          {
            content: '口香糖',
            price: 2,
          }
        ]
      },
      onShow() {
        this.setData({
          totalExpenditure: app.totalExpenditure(),
          billFlow: app.billFlow,
          budget: app.budget,
          remainingBudget: app.remainingBudget()
        })
      },
      pay(e) {
        const { price, content } = e.currentTarget.dataset;
        app.billFlow.push({
          content,
          price: -1 * price
        })
        this.onShow()
      }
    })
    

    app.js

    App({
      // 预算
      budget: 100,
      // 账单流水
      billFlow: [
        {
          content: '餐饮',
          price: -73
        }
      ],
      // 总支出
      totalExpenditure() {
        return Math.abs(this.billFlow.filter(f => f.price < 0).reduce((t, i) => t + i.price, 0))
      },
      // 剩余预算 
      remainingBudget(){
        return this.budget - this.totalExpenditure();
      }
    })
    

    https://developers.weixin.qq.com/s/2gupefmd7SCi

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 9月22日
  • 已采纳回答 9月14日
  • 创建了问题 9月11日

悬赏问题

  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 arbotix没有/cmd_vel话题
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?