【问题标题】:Angularfire: behavior of synchronized arrayAngularfire:同步数组的行为
【发布时间】:2016-01-22 07:30:14
【问题描述】:

我在 angularfire 上遇到了同步数组的问题。我在 angularfire 1.1.3 和 firebase 2.3.1 上。 我有一个问题

var arr = $firebaseArray(ref.limitToFirst(5));

到目前为止我看到的行为是当我打电话时

arr.$remove(0)

查询将返回的下一个对象会自动加载到同步数组中。这实质上使数组成为查询响应上的滑动窗口 - 它始终具有相同数量的元素。

自上周以来,这种行为似乎发生了变化,我得到了两种不同的情况:

1:arr 确实加载了 5 个项目,但在调用 arr.$remove 五次后,数组为空 - 这在 JavaScript 数组上是正常行为,但不是我所看到的之前在 AngularFire 同步数组上。

2:或arr 已加载但随后消失,即在代码中:

arr.$loaded(function(){
\\ break
})

如果我中断回调,arr 确实有五个项目,对应于 Firebase 上的数据,但在 Angular 摘要循环结束时,arr 是一个空数组。

演示: This plunker 显示行为 1

所以我的问题是:

  • 我依赖的行为不是 API 的正式组成部分吗?
  • 这种行为有改变吗?
  • 什么解释了最后一点(firebase 数组在 $loaded 上有项目但最终为空?)

更新

似乎行为 2 发生在行为 1 之后 - 更准确地说:在到达一个空的同步数组之后,如果我重新加载页面,那么我在 arr.$loaded 的回调中得到一个非空数组,但最后是一个空数组. 这是否意味着firebase本身会“卡住”? 我会尝试在 plunker 中重现它。

【问题讨论】:

  • 这看起来与 AngularFire 无关。显然,AF 行为的改变至少需要改变 Angular 或 AF 版本的库。我的猜测是 SDK 中的回归。没有所有额外组件的最小重现(即仍然重现错误的最小占用空间)将非常有帮助。
  • @Kato 您对 plunker 有何看法 - 它显示了当前行为($firebaseArray 中没有重新加载任何内容)。这种行为是预期的,还是对于ref.limitToFirst(3).on(...) 查询,数组是否应该始终包含三个元素(至少在看到该位置的所有项目之前)?
  • @AdrienF 这实际上看起来像一个错误。我们有一个修复排队,并将部署它。一旦完全部署,我将更新这个问题的答案。感谢举报,不便之处敬请见谅!
  • @GregSoltis 感谢您的快速回复 - 您对时间(或范围)有一个粗略的估计吗?
  • 我不能保证,但我们将在下周初拍摄。

标签: javascript angularjs firebase angularfire


【解决方案1】:

这应该现在修复。给您带来的不便深表歉意!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2013-05-19
    • 1970-01-01
    • 2014-03-25
    相关资源
    最近更新 更多