为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript/Vue js/Firestore: innerHTML 为空,但它在第一次工作

Javascript/Vue js/Firestore: innerHTML 为空,但它在第一次工作

慕神8447489 2023-03-18 17:03:52
我正在处理自己的项目,我进行了查询,它获取了总用户数并将其存储在p标签中。<v-card class="mt-10 mb-5 users" max-width="344">    <v-card-text>         <p class="display-1 text--primary text-center">Users</p>         <div class="display-1 text--primary text-center">             <p id="users"></p>          </div>     </v-card-text></v-card>created() {     // Get all user profile     db.collection("Profile").get().then((res) => {          document.getElementById('users').innerHTML = res.size      })}但是现在我得到了我没有改变任何东西的错误。错误Uncaught (in promise) TypeError: Cannot set property 'innerHTML' of null
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

正如其他人所提到的,当您使用数据来驱动模板时,Vue 的效果最好。直接操作 DOM 是一种反模式。


例如,为要显示的信息使用数据属性,并在查询完成时为其分配一个值


<p>{{ profileCount }}</p>

export default {

  data: () => ({ profileCount: null }),

  async created () {

    const { size } = await db.collection("Profile").get()

    this.profileCount = size

  }

}


查看完整回答
反对 回复 2023-03-18
?
MM们

TA贡献1886条经验 获得超2个赞

不要像通常在使用vanilla JS(纯 javascript)时那样直接操作 DOM,或者jQuery因为在使用时vue.js遵循反应模式很好。


<template>

  <p> {{ users }} </p>

</template>


<script>

export default {

  data() {

    return {

      users: 0

    };

  },


  // you can use created or mounted, see which works

  created() {

    db.collection("Profile").get().then((res) => {

      this.users = res.size

    })

  }

};

</script>


查看完整回答
反对 回复 2023-03-18
  • 2 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信