Как запретить элементу firebase-query обновлять данные
Я использую полимер и FireBase для создания веб-приложения. Чтобы получить список в базе данных, я использую элемент "firebase-query" PolymerFire.
Теперь список элементов, которые я получаю из базы данных, - это сообщения, которые люди публикуют в моем приложении. Теперь у меня есть элемент firebase-query так:
<firebase-query
id="query"
path="/posts"
limit-to-last="15"
data="{{posts}}">
</firebase-query>
и я имею dom-repeat
шаблон тега для отображения сообщений, подобных этому
<template is="dom-repeat" items="[[posts]]" as="post">
<div>[[post.content]]</div>
</template>
Теперь, если у меня будет куча людей, публикующих много контента одновременно, этот список будет обновляться каждую секунду, и его будет трудно читать.
Есть ли способ предотвратить firebase-query
элемент, чтобы остановить обновление после завершения начальной загрузки, и, возможно, обновить снова, когда я вызываю определенную функцию?
Я попытался добавить отключенный атрибут, но он просто удаляет все, что находится внутри data
атрибут ({{posts}}
в моем случае), поэтому, когда отключен, ничего не появляется на экране.
1 ответ
Я не знаком с firebase-query, но вы можете сделать простой трюк. На имущество posts
задавать observer
функция.
posts: {
Type: Array,
value: function(){return []},
observer: "debouncePosts"
}
затем в js вы можете определить функцию debounce, где я установил, например, 10 000 милисекунд (10 секунд) и вызвал некоторую функцию обратного вызова, где я установил this.posts
в currentPosts
собственность, которая будет предоставлена в template
,
debouncePosts: function(data) {
this.debounce("debouncePost", function(){
this.set("currentPosts", this.posts);
}.bind(this), 10000)
}
и HTML шаблон будет выглядеть так:
<template is="dom-repeat" items="[[currentPosts]]" as="post">
<div>[[post.content]]</div>
</template>
документация для обсуждения: https://www.polymer-project.org/1.0/docs/api/Polymer.Base#method-debounce
Если вам нравится делать это по-другому, например, обновлять данные всякий раз, когда пользователь нажимает кнопку update, теперь это действительно просто для вас. Просто нажмите на какую-то кнопку, и тогда в функции вы будете делать что-то вроде this.set("currentPosts", this.posts)