在聚合物模块中使用观察者

时间:2017-05-05 08:40:59

标签: javascript firebase firebase-realtime-database observers polymerfire

我有一个简单的firebase查询:

<firebase-query
  id="query"
  app-name="app_name"
  path="/users"
  data="{{patients}}">
</firebase-query>

是否有可能创建一个回调来实时接收用户节点的更新?我读到了关于观察者但我不明白如何在我的模块中使用它。

1 个答案:

答案 0 :(得分:1)

默认情况下,使用此查询,/ users中的节点实时更新到数组“patients”。所以你可以立即使用它,而无需写任何观察者等等,例如在dom-repeat元素中。当更多节点进入查询时,此元素将更新。 无论如何 如果你想观察这个数组的变化(并在之后修改数据),你需要在属性块中设置一个观察者,如下所示:

static get properties() {
  return {
    patients: {
      // use only one of these types:Boolean | Number | String | Array | Object, 
      // in your case i think its an Array
      type: Array
      // For an Array or Object, you must return it from a function
      // (otherwise the array will be defined on the prototype
      // and not the instance):
      value: function() { return [] },
      // other elements need to get informed if the value changes? then add this                    
      // line:
      notify: true, 
      // now set the observer
      observer: '_patientsChanged',
    },
  }
}

// and the observer function itself:

_patientsChanged(newVal, oldVal){
  // do whatever you want to do  e.g. Log the change of the Variable in the      
  // Console:

  console.log('Variable patients changed: It had this value: ');
  console.log(oldVal);
  console.log('And now it has this Value:');
  console.log(newVal);

}

亲切的问候

chwzrlee