2017-05-31 44 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