【发布时间】:2017-04-29 00:24:45
【问题描述】:
我开发了一个基于 Vue.js 的小型网络应用,使用 Firebase 来存储和同步数据。我存储items(例如,带有属性title和subtitle)和带有属性listitems的lists,其中一个键数组(那些从 Firebase 生成)的 items 被存储。结构如下:
现在的问题:我想显示一个列表并显示 listitems 属性中的项目,我这样做是这样的:
组件:
var ShowList = Vue.extend({
template: '#show-list',
firebase: {
// get all existing items from firebase
items: firebase.database().ref('items')
},
data: function () {
// get list item keys of list 'list_id' and bind it to this.list
this.$bindAsObject('list', listsRef.child(this.$route.params.list_id));
return {
list: this.list
};
}
});
模板:
<!-- show a list -->
<template id="show-list">
<ul v-if="list.items != ''">
<li v-for="key in list.items"> <!-- I would like to not being forced to -->
<template v-for="item in items"> <!-- iterate the whole list of existing items -->
<span v-if="item['.key'] == key">
{{ item.title }}
</span>
</template>
</li>
</ul>
<div v-else>No items.</div>
</template>
如您所见,我必须使用两次迭代,其中我为 list.items 中的每个条目迭代完整的项目列表。
我的问题:有没有更有效的方法将实际对象映射到对象键列表?对于大量的项目记录,我的方法会很慢。也许我太盲目了,看不到更简单的解决方案?
感谢您的宝贵时间!
【问题讨论】:
-
从快速扫描vuefire source,我认为它没有内置支持加入此类数据。
-
@FrankvanPuffelen:是的,似乎是这样。还是谢谢!
标签: javascript firebase firebase-realtime-database vue.js vuefire