我正在制作类似于Facebook News Feed的新闻Feed。我按以下顺序执行它:
当应用程序启动后,得到的一切,但只是推两项显现。
用户可以向下滚动以查看更多信息,我会将更多信息添加到列表中。
如果有任何新项目,用户需要拉动以刷新以添加新项目。
我现在唯一的问题是,一个项目被添加每次$firebaseArray
自动添加新的项目,以我的数组,我不想snyc变化(我想查询一次,得到一组列表)。我想知道是否有人会知道如何防止自动更新?
我正在制作类似于Facebook News Feed的新闻Feed。我按以下顺序执行它:
当应用程序启动后,得到的一切,但只是推两项显现。
用户可以向下滚动以查看更多信息,我会将更多信息添加到列表中。
如果有任何新项目,用户需要拉动以刷新以添加新项目。
我现在唯一的问题是,一个项目被添加每次$firebaseArray
自动添加新的项目,以我的数组,我不想snyc变化(我想查询一次,得到一组列表)。我想知道是否有人会知道如何防止自动更新?
不是直接将$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.
})
});
查找到。一旦这将让你得到的数据只是一次:https://firebase.google.com/docs/reference/js/firebase.database.Query#once
虽然'once()'确实有帮助,但问题在于'$ firebaseArray()'将OPTION代码中的'on()'抽象出来。 –
对,这就是为什么我不认为OP可以使用它。 –
谢谢弗兰克和马修!我正在使用firebaseArray,因为我正在这样做。 '''var queryOfeverything = firebase.database()。ref(“events”)。orderByChild(“dateSince1970”)。startAt(nowSince1970);'''我正在订购我正在收到的事件,我只想获取事件过去某个日期。如果我确实使用过一次,我可以为每个事件添加一个包含过去某个日期的事件并以角度使用orderby的事件。这是最有效的方法吗?非常感谢! –
我没有类似的东西来这已经是如果这是你的意思。 \t $ scope.allEvents = $ firebaseArray(queryOfeverything); $ scope.eventToDisplay = $ scope.allEvents。不幸的是,这不起作用。 –
这是因为您通过引用传递'firebaseArray',这在技术上是一个JavaScript对象。你需要映射(克隆数组到一个普通的javascript数组)到$ scope变量。我会更新答案。 – vgrafe