Использовать наблюдателя в модуле полимера
У меня есть простой запрос 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