Я использую Firebase и Polymer в следующей настройке:
Данные Firebase
Как видите, есть несколько пользователей с их user-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
нужен массив, но Firebase дает мне объект, поскольку я использую push-id. Использование массива и сохранение его в Firebase не вариант (например, [0: abc, 1: def]). Кроме того, мне нужно сохранить двустороннюю привязку данных
Испробованные решения
(1) Односторонняя привязка данных - Альтернатива 1
(2) Односторонняя привязка данных — вариант 2
(3) Двусторонняя привязка данных
Как сказано, (1) и (2) не являются вариантами. (3) на самом деле работает, но при использовании этого решения, если я обновляю только одно подсвойство, оно обновляет все подсвойства в объекте. Это заставляет dom-repeat повторно инициализировать элементы. Я использую элемент <paper-input>
, и поэтому он теряет фокус после нажатия одной клавиши.
(4) Также использование (1) или (2) и последующая привязка вручную к подсвойствам невозможна, так как нет возможности использовать привязку с использованием динамического индекса (например, {{dataCardSet.card-items.index}}
(5) Я также пытался использовать array-selector
в dom-repeat
, имея ту же проблему, что я не могу динамически создавать привязку данных.
Требуется поддержка
Мне нужен способ сохранить двустороннюю привязку данных, сохраняя dom-repeat и используя push-ID. Я на самом деле удивлен и разочарован, поскольку Firebase рекламируется, но не работает с фреймворком Polymer в качестве стандарта.
Также это Polycast Роба Додсона с кодом на GitHub создает впечатление, что это будет легко работать, но, глядя на код, он использует массив и push-ID. как показано на видео.
Спасибо за вашу помощь!