【发布时间】:2018-09-07 19:16:43
【问题描述】:
我对来自 Angular 的 Vue.js 完全陌生。我尝试加载 asyncData 并像这样显示它:
<template>
<section>
<h1 v-for="employee in employees" v-bind:key="employee.name"> {{employee.name}}</h1>
</section>
</template>
<script>
import { db } from '../firebase.js'
import { Employee } from "../models/employee.js";
import { Entry } from "../models/entry.model.js";
export default {
data: function() {
return { employees: [] };
},
created: function() {
this.loadEmployees();
},
methods: {
loadEmployees: function() {
db.collection('Employees').get().then(
(snapshots) => {
for (const doc of snapshots.docs) {
const e = new Employee(doc.data().name, doc.data().worktimes);
e.id = doc.id
this.employees.push(e);
}
}
)
},
}
}
</script>
这对我来说似乎很简单,但 v-for 在加载后不会显示数据。关于 vue 和异步数据,我需要了解一些我不知道的事情吗?我真的找不到任何有用的东西。
【问题讨论】:
-
@zero298 你说得对。我尝试覆盖以查看是否解决了我的问题,但没有解决。我只是在发布时忘记更正它
-
在所有迭代之后,您仍然需要分配回
data的employees。所以把this.employees = employees;放在for循环之后,把const employees = [];移出for循环。