2016-04-15 3 views
1

Я использую элемент коллекции firebase для извлечения массива объектов из моего репозитория Firebase в приложении Polymer. Данные извлекаются без проблем. Теперь, когда у меня есть объекты, как я могу обновить дочернее свойство на одном из них?обновление данных Firebase с использованием коллекции Firebase от Polymer

<firebase-collection 
    id="myfb" 
    location="https://dinosaur-facts.firebaseio.com/dinosaurs" 
    data="{{dinosaurs}}"> 
</firebase-collection> 

<template is="dom-repeat" items="[[dinosaurs]]" as="dinosaur"> 
    <h4>[[dinosaur.__firebaseKey__]]</h4> 
    Height: <span>[[dinosaur.height]]</span> 
    <iron-icon on-click="updateDino"></iron-icon> 
</template> 

... полимер шаблонный для краткости опускаем ...

updateDino: function(e) { 
    var key = e.model.dinosaur.__firebaseKey__; 

    // now what? 
    // tried this: e.model.dinosaur.height = 3.1415 
    // but firebase doesn't save the change. 

    // also tried various things with this.$.myfb.add but 
    // it always creates a new element 

    // where's the set() method on firebase-collection? 
    // something like this.$.myfb.set(key, updatedObj) would be handy. 
} 
+2

Попробуйте использовать 'e.model.set ('dinosaur.height', 'новое значение, которое нужно установить')', которое правильно устанавливает его так, чтобы оно было выбрано связью данных полимера, и это должно вызвать сборку «firebase-collection» последовательность обновления – Alan

+0

AH ... это сработало. Спасибо. upvoted. – drasticp

ответ

0

Вы можете использовать firebase документ для обновления данных, он может быть сопоставлен с места на firebase так:

<firebase-document 
    location="https://dinosaur-facts.firebaseio.com/dinosaurs" 
    data="{{dinosaurs}}"></firebase-document> 

A - ссылка на удаленный документ где-то на Firebase. Элемент извлекает документ в предоставленном местоположении и предоставляет его как объект, который подходит для глубокой двусторонней привязки данных.

https://elements.polymer-project.org/elements/firebase-element?active=firebase-document

+0

Вот пример, который я нашел где-то, не знаю, кто это сделал: http://jsbin.com/lokegu/12/edit?html,output – JordanHendrix

0

Как Алан отметил в комментариях, это работал с firebase-коллекции:

e.model.set('dinosaur.height', 'new value to be set') 

также, данные односторонние обязательные для элементов = [[динозавры]] было изменено на двустороннее связывание, как в items = {{dinosaurs}}. Я не ожидал, что это повлияет на связь с firebase, но это устранило проблему.

Смежные вопросы