2016-09-06 43 views
0

我正在制作类似于Facebook News Feed的新闻Feed。我按以下顺序执行它:

  1. 当应用程序启动后,得到的一切,但只是推两项显现。

  2. 用户可以向下滚动以查看更多信息,我会将更多信息添加到列表中。

  3. 如果有任何新项目,用户需要拉动以刷新以添加新项目。

我现在唯一的问题是,一个项目被添加每次$firebaseArray自动添加新的项目,以我的数组,我不想snyc变化(我想查询一次,得到一组列表)。我想知道是否有人会知道如何防止自动更新?

回答

0

不是直接将$firebaseArray绑定到视图,而是将其克隆到将绑定到视图的作用域(或控制器)属性。将该过程分解为您可以在用户重新加载时调用的函数,以便重新创建$firebaseArray

更合适的方法是使用Firebase的http api,并使用角度为$http的服务。

编辑:克隆阵列的范围VAR,请尝试以下操作:

var allEvents = $firebaseArray(queryOfeverything); 

allEvents.$loaded() 
    .then(function(events){ 
     $scope.allEvents = angular.map(events, function(event) { 
      return event; // you may want to replace this line - I am not very familiar with firebase. 
     }) 
    }); 
+0

我没有类似的东西来这已经是如果这是你的意思。 \t $ scope.allEvents = $ firebaseArray(queryOfeverything); $ scope.eventToDisplay = $ scope.allEvents。不幸的是,这不起作用。 –

+0

这是因为您通过引用传递'firebaseArray',这在技术上是一个JavaScript对象。你需要映射(克隆数组到一个普通的javascript数组)到$ scope变量。我会更新答案。 – vgrafe

1

查找到。一旦这将让你得到的数据只是一次:https://firebase.google.com/docs/reference/js/firebase.database.Query#once

+0

虽然'once()'确实有帮助,但问题在于'$ firebaseArray()'将OPTION代码中的'on()'抽象出来。 –

+0

对,这就是为什么我不认为OP可以使用它。 –

+0

谢谢弗兰克和马修!我正在使用firebaseArray,因为我正在这样做。 '''var queryOfeverything = firebase.database()。ref(“events”)。orderByChild(“dateSince1970”)。startAt(nowSince1970);'''我正在订购我正在收到的事件,我只想获取事件过去某个日期。如果我确实使用过一次,我可以为每个事件添加一个包含过去某个日期的事件并以角度使用orderby的事件。这是最有效的方法吗?非常感谢! –