Angularfire:同步数组的行为
Angularfire: behavior of synchronized array
我一直在使用 angularfire 上的同步数组时遇到问题。我在 angularfire 1.1.3 和 firebase 2.3.1 上。
我有一个问题
var arr = $firebaseArray(ref.limitToFirst(5));
我到目前为止看到的行为是当我调用
arr.$remove(0)
查询返回的下一个对象会自动加载到同步数组中。这实质上使数组在查询响应上滑动 window - 它始终具有相同数量的元素。
自上周以来,这种行为似乎发生了变化,我得到了两种不同的情况:
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 本身得到 "stuck"?
我会尝试在 plunker 中重现它。
现在应该可以解决这个问题。抱歉给您带来不便!
我一直在使用 angularfire 上的同步数组时遇到问题。我在 angularfire 1.1.3 和 firebase 2.3.1 上。 我有一个问题
var arr = $firebaseArray(ref.limitToFirst(5));
我到目前为止看到的行为是当我调用
arr.$remove(0)
查询返回的下一个对象会自动加载到同步数组中。这实质上使数组在查询响应上滑动 window - 它始终具有相同数量的元素。
自上周以来,这种行为似乎发生了变化,我得到了两种不同的情况:
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 本身得到 "stuck"?
我会尝试在 plunker 中重现它。
现在应该可以解决这个问题。抱歉给您带来不便!