白沐沐vccc 2023-06-29 11:19 采纳率: 96.2%
浏览 27
已结题

Vue二维数组渲染为空


在vue中我先是请求了二维数组daka的数据,然后把二维数组daka进行渲染,显示整个数组都是空的,可是在获取daka数据时打印出来的不是空,为什么会这样。

这是我的代码


<template>
<div>
{{daka}}
</div>
</template>

<script>
export default {
  data() {
    return {
      daka: [[], [], []],
    }
  },
  async mounted() {
    //获取签到周/月/总榜
    let { data: result } = await this.$API.reqDakaRank();
    if (result.code === 200) {
      for (var i in result.data) this.daka[i] = result.data[i];
      console.log(this.daka[0][0]);
    }
    else {
      this.elalert('error', '获取签到榜信息失败!');
    }
  }
}
</script>
  • 写回答

5条回答 默认 最新

  • Java Fans 全栈领域优质创作者 2023-06-29 11:35
    关注

    在Vue中,数据的渲染是异步的。这意味着在mounted生命周期钩子函数中获取到的数据可能还没有被完全渲染到页面上。所以,当你打印出daka数据时,它可能已经被正确地赋值了,但是在页面上还没有显示出来。

    为了解决这个问题,你可以在模板中使用v-if指令来判断daka数组是否有数据,只有当数组有数据时才进行渲染。例如:

    <template>
      <div v-if="daka[0].length > 0">
        <!-- 渲染daka数组的代码 -->
      </div>
    </template>
    

    这样,当daka数组有数据时,才会渲染该部分代码,确保数据已经被完全渲染到页面上。

    另外,你也可以使用Vue的watch属性来监听daka数组的变化,一旦数组有数据,就执行相应的操作。例如:

    export default {
      data() {
        return {
          daka: [[], [], []],
        }
      },
      watch: {
        daka: {
          handler(newVal) {
            if (newVal[0].length > 0) {
              // 执行相应的操作
            }
          },
          deep: true,
        },
      },
      async mounted() {
        // 获取签到周/月/总榜
        let { data: result } = await this.$API.reqDakaRank();
        if (result.code === 200) {
          for (var i in result.data) this.daka[i] = result.data[i];
          console.log(this.daka[0][0]);
        }
        else {
          this.elalert('error', '获取签到榜信息失败!');
        }
      }
    }
    

    通过watch属性,当daka数组有数据时,就会执行相应的操作。这样可以确保在数据完全渲染到页面上后再进行相应的操作。

    如若有用,还望博友采纳!

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 这个main已经在filename.obj中定义是什么错 C语言
  • ¥15 使用elementor设计样式
  • ¥15 谁能提供一个中文版的推销咨询网站连接?
  • ¥15 springboot项目程序启动报错
  • ¥15 grlb复位后关闭硬限位开关,移动中仍然会触发停止。
  • ¥20 微信平台收付通的相关问题
  • ¥15 grbl复位后,移动会触发报警Alarm 1
  • ¥15 grbl为何无法移动到比复位坐标更小的坐标?
  • ¥15 pspice找元件和一个问题
  • ¥60 怎样隐藏win7系统进程?