Использовать наблюдателя в модуле полимера

У меня есть простой запрос firebase:

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

Можно ли создать обратный вызов для получения в режиме реального времени обновления узла пользователей? Я читал о наблюдателе, но я не понимаю, как я могу использовать его в моем модуле.

1 ответ

С помощью этого запроса по умолчанию узлы из /users обновляются в реальном времени до массива "Patient". так что вы можете использовать это немедленно, без записи какого-либо наблюдателя или чего-то подобного, например, в элементе 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

Другие вопросы по тегам