使用Polymer'的火球收集

update Firebase data using Polymer's firebase-collection

本文关键字:火球 Polymer 使用      更新时间:2023-09-26

我正在使用firebase集合元素从Polymer应用程序中的firebase存储库中获取对象数组。数据获取没有问题。既然我有了对象,如何更新其中一个对象的子属性?

<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.
}

您可以使用firebase文档来更新数据,它可以映射到firebase上的一个位置,比如:

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

A是对Firebase上某个远程文档的引用。元素在提供的位置获取文档,并将其公开为适用于深度双向数据绑定的Object。

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

正如Alan在评论中指出的,这与firebase集合一起工作:

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

此外,items=[[恐龙]]的单向数据绑定被更改为items={{恐龙}}中的双向绑定。我没想到这会影响firebase耦合,但它解决了问题。