【发布时间】:2017-06-23 19:35:32
【问题描述】:
我在 VueJS 方法中有一个 firebase 查询设置
data: {this.todaysEvents},
methods : {
getTodaysEvents (day) {
this.todaysEvents = []
const events = db.ref('calendar')
const query = events.orderByChild('day').equalTo(day)
console.log(query)
query.on('value', snap => {
this.todaysEvents.push(snap.val())
console.log(this.todaysEvents)
})
}
然后通过v-for循环使用:
<ul class="events-header-list">
<li :key="index" v-for="(event, index) in todaysEvents[0]" class="chip">{{event}}</li>
</ul>
当我更新事件时出现问题。数据不会实时同步。需要做什么才能使其成为实时?
编辑:这是todaysEvents返回的数据:
[
{
"Same Event": {
"calendar": "Sports",
"color": "orange",
"date": "2017-05-22",
"day": 23,
"desc": "test description",
"name": "test"
},
"some key": {
"day": 23,
"month": 6,
"name": "cooler event"
}
}
]
【问题讨论】:
-
很遗憾我还没有使用 vue.js 的经验,但它似乎没有检测到您更新了数据。此页面似乎与此相关:vuejs.org/v2/guide/reactivity.html
-
snap.val()的结果是数组吗? -
@BertEvans Firebase 不幸返回对象。
-
什么是
todaysEvents[0]? -
@BertEvans 因此,由于 firebase 返回一个对象,然后我将该对象的对象推送到数组
todaysEvents然后我必须指定[0]才能访问返回的 firebase 对象。我知道应该有一种方法可以使用forEach将其转换为数组,但我仍在研究 JS。
标签: javascript firebase firebase-realtime-database vue.js vuejs2