我在以下设置中使用 Firebase 和 Polymer:
Firebase 数据
正如你所看到的,有几个用户有他们的用户 ID,下面是一个卡片组列表。这基本上是一个数组,但存储为我想使用的对象,firebase push id
因为这可能会变得协作。
聚合物代码
使用 Polymer,我使用 dom-repeat 来迭代项目(只要我使用静止数组,效果就很好。
<template is="dom-repeat" items="{{dataCardSet.card-items}}">
<el-card-editor card-item="{{item}}"></el-card-editor>
</template>
问题
众所周知,dom-repeat
需要一个数组,但是当我使用推送 ID 时,Firebase 给了我一个对象。使用数组并将其存储到 Firebase 不是一个选项(例如 [0: abc, 1: def])。另外,我需要保持双向数据绑定
尝试过的解决方案
(3)双向数据绑定
如前所述,(1)和(2)是没有选择的。(3) 实际上是有效的,但是使用这个解决方案,如果我只更新一个子属性,它会更新对象中的所有子属性。这会强制 dom-repeat 重新初始化元素。我正在使用一个<paper-input>
元素,因此在按下一个键后它会失去焦点。
(4) 也无法使用 (1) oder (2) 然后手动绑定到子属性,因为无法使用动态索引(例如 {{dataCardSet.card-items.index}}
(5) 我也尝试在 中使用array-selector
,dom-repeat
遇到同样的问题,我无法动态创建数据绑定。
需要支持
我需要一种方法来保持双向数据绑定,保持 dom-repeat 和使用 push-ID。实际上,我很惊讶和失望,因为 Firebase 被宣传,但后来没有使用 Polymer 框架作为标准。
Rob Dodson 的这个Polycast和GitHub 上的代码给人的印象是这很容易工作,但是看看代码,它使用了一个数组和 push-ID,如视频中所示。
谢谢你的帮助!