附加到Firebase参考AngularFire

时间:2013-12-29 19:10:41

标签: javascript angularjs firebase angularfire

假设我正在构建无限卷的文章。

我的文章ID通过网址传递:

var id = $stateParams.id;

我希望startAt我的Firebase集合中的索引和limit 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函数,因此我们无法连接回调中的value

我如何附加到现有结果集,以便它看起来不像articles重新加载”?

1 个答案:

答案 0 :(得分:2)

这有点棘手 - 附加到新结果集的最佳方法是分离$ firebase返回的内容以及视图中显示的内容。

在这种情况下,我们假设$ 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.
};