2017-05-31 27 views
1

我正在使用聚合物和firebase创建一个web应用程序。为了获得数据库中的列表,我使用了聚合火力的“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可以定义去抖动函数其中I设定为例如,10 000毫秒(10秒)和被叫其中I设置到this.posts将在template呈现currentPosts属性一些回调函数。

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

如果你喜欢,只要用户按下更新做不同的方式像更新数据,它真的很容易现在为你。刚刚成立的抽头上的一些按钮,然后在功能上,你会做这样的事情this.set("currentPosts", this.posts)

+0

我试图让一个函数,包括这个: this.set(“currentPosts”,this.posts) 但是DOM重复模板没有更新... – dshukertjr