假设我正在构建一个无限的文章卷轴。
我的文章ID是通过URL传递的:
var id = $stateParams.id;
我想要在我的 Firebase 集合中startAt
该索引并限制
10:
var limit = 10;
var articlesRef = new Firebase("https://example.firebaseio.com/articles").startAt(null, id).limit(limit);
$scope.articles = $firebase(articlesRef);
在由 inifite-scroll 指令触发的 loadMore()
函数中,我想附加更多内容:
$scope.loadMore = function(){
var limit = limit + 10;
//Obviously this isn't going to work.
$scope.articles = $firebase(articlesRef.startAt(null, id).limit(limit));
}
- 我们不能concat,因为返回的集合是一个对象。
- 我们不能多次使用
loaded
函数,因此我们不能concat回调中的值
。
我如何追加到现有结果集,这样文章
就不会显示为“重新加载”?
最佳答案
这有点棘手 - 附加到新结果集的最佳方法是将 $firebase 返回的内容和 View 中显示的内容分开。
在本例中,我们假设 $scope.articles 就是正在显示的内容。主要的事情是将 $firebase() 的返回值分配给 $scope.articles 以外的东西,并依赖于 'changed' 事件而不是 'loaded'。然后,只要需要加载新的集合,只需复制内容即可。
var articlesRef = new Firebase("https://example.firebaseio.com/articles").startAt(null, id).limit(limit);
$scope.articles = {};
var obj = $firebase(articlesRef);
obj.$on('change').function() {
// For each property in obj, set $scope.articles.
};
关于javascript - 附加到 Firebase 引用 AngularFire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20829014/