我一直在與angularfire同步陣列的問題。我在firefire 2.3.1上使用angularfire 1.1.3。 我有一個查詢Angularfire:同步陣列的行爲
var arr = $firebaseArray(ref.limitToFirst(5));
,我已經看到到現在爲止的行爲是,當我打電話
arr.$remove(0)
將由查詢返回的下一個對象被加載到同步數組自動。這基本上使數組成爲查詢響應的滑動窗口 - 它總是具有相同數量的元素。
自上週以來,這種行爲似乎有所改變,我也得到兩種不同的情況:
1:要麼arr
沒有得到加載與5個項目,但調用arr.$remove
五次後,數組是空的 - 這對JavaScript數組來說是正常的行爲,但不是我之前看到的AngularFire同步數組。
2:或者arr
被加載但然後消失,即代碼:
arr.$loaded(function(){
\\ break
})
如果我再打突破,arr
確實有五個項目,對應於火力地堡數據,但在最後的角度摘要循環,arr
是一個空數組。
演示:This plunker顯示行爲1
所以我的問題是:
- 當時我靠着那是API的沒有正式一部分的行爲?
- 這種行爲是否改變了?
- 如何解釋的最後一點(有上
$loaded
項目的火力點陣列,但隨後結束了空?)
更新
看來,行爲2後行爲1發生了 - 更確切地說,是在得到一個空的同步數組,如果我重新加載頁面,那麼我在arr.$loaded
的回調中得到一個非空數組,但最後是一個空數組。 難道這意味着firebase本身會「卡住」嗎? 我會盡力在重拳中重現。
這與AngularFire沒有關係。顯然,AF中行爲的改變至少需要改變角度或AF版本的庫。我的猜測會是SDK中的一個迴歸。沒有所有額外組件的最小再現(即儘可能最小的再現錯誤)將是非常有用的。 – Kato
@Kato您對蹲點的看法如何 - 它顯示了當前的行爲(無需重新加載$ firebaseArray)。如果數組總是有三個元素(至少在該位置的所有項目都被看到之前),那麼這種行爲是否會被期望,或者對於'''ref.limitToFirst(3).on(...)'''查詢呢? – AdrienF
@AdrienF這實際上看起來像一個錯誤。我們已經排好了一個修復程序並將部署它。在完全部署後,我會更新這個問題的答案。 感謝您的報告,並對由此造成的不便深表歉意! –