javascript - 附加到 Firebase 引用 AngularFire

标签 javascript angularjs firebase angularfire

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

我的文章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/

相关文章:

javascript - 比较两个数组并在相同值索引处更改数据

c# - Bootstrap 模态关闭按钮不会导致回发

javascript - `angular-ui-router` 如何确定在哪里插入状态 View ?

java - Android - Firebase RTDB 检索和显示数据

javascript - Angular2 表单重置,表单重置或提交后取消选中 radio

javascript - Angular 中的数据未在预期时间更新

angularjs - 使用 AngularJS ng-disabled 启用/禁用 kendo ui 下拉列表

javascript - AngularJS 选项卡集中的 Chart.js 不呈现

javascript - 如何使用经过身份验证的 id token 和数据库规则保护 Firebase Cloud Function HTTP 端点?

android - InApp Messaging 不会在自定义事件上显示消息