needanothercoder 2024-09-23 06:51 采纳率: 33.3%
浏览 12
已结题

给数组增加数据后页面上不显示新数据。

问题,点击按钮给数组增加数据后,页面上不显示新增加的数据,如何修改?


Page({
  data: {
    randomNumber: null,
    myArray: [1,2,3]
  },
  generateRandomNumber: function () {
    for (var i = 0; i < 10; ++i) {
      this.data.myArray.push(Math.random()*100)
    }
    this.setData({
      randomNumber: Math.random()*100
    })
  }
})

====

<!--index.wxml-->
<view class="container"> 
<button bindtap="generateRandomNumber">生成随机数</button> 
<text>生成的随机数为: {{randomNumber}}</text>
<view wx:for="{{myArray}}">
    {{index}} : {{item}}
</view>
</view>

img

如上图,点击按钮后,页面上只显示数组初始化时的三个数值,不显示新增加的随机数。

  • 写回答

1条回答 默认 最新

  • 月下独码 Java领域新星创作者 2024-09-23 10:06
    关注

    问题分析
    在微信小程序中,视图层的更新是依赖于数据的响应式变化的。当修改数据时,需要使用setData方法来通知框架进行视图更新。在给定的代码中,虽然向myArray数组中添加了新的随机数,但并没有正确地使用setData方法来更新与myArray相关的视图。

    解决方案
    修改generateRandomNumber函数如下:

    generateRandomNumber: function () {
        for (var i = 0; i < 10; ++i) {
            this.data.myArray.push(Math.random() * 100);
        }
        // 使用setData方法同时更新randomNumber和myArray
        this.setData({
            randomNumber: Math.random() * 100,
            myArray: this.data.myArray
        });
    }
    

    这里,在向myArray数组添加新元素后,通过setData方法将更新后的myArray重新设置到data对象中,这样框架就能检测到数据的变化并相应地更新视图。同时也更新了randomNumber的值,确保整个页面的状态更新是正确的。

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

报告相同问题?

问题事件

  • 系统已结题 10月2日
  • 已采纳回答 9月24日
  • 创建了问题 9月23日

悬赏问题

  • ¥30 stm32f103c8t6制作万能红外遥控器
  • ¥15 有人会fastcrud写前端页面吗
  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?