2013-10-13 18 views
0

我遵循@Anant在Firebase blog上很好地描述的「非規範化」數據模式。爲了查詢和渲染子對象,他建議在父對象上偵聽child_added事件以獲取子ID,然後分別用.once('value', fnc)查詢這些子對象以呈現它們。從博客文章(他用的是張貼鏈接爲家長和評論兒童 - 認爲reddit的或黑客新聞):從AngularJS的Firebase呈現對象的子項

var commentsRef = 
    new Firebase("https://awesome.firebaseio-demo.com/comments"); 
var linkRef = 
    new Firebase("https://awesome.firebaseio-demo.com/links"); 

var linkCommentsRef = linkRef.child(LINK_ID); 
linkCommentsRef.on("child_added", function(snap) { 
    commentsRef.child(snap.name()).once("value", function() { 
    // Render the comment on the link page. 
)); 
}); 

[原文]

我試圖用調和這我的AngularJS視圖,因爲將.once的結果添加到$scope陣列中並使用ngRepeat將爲您留下一個靜態列表(如果它們被另一個客戶端更改或刪除,則子項不會實時更新)。換句話說,我想要有一個類似angularFireCollection的子對象,它們將動態添加,刪除和更新。

+0

嗯。除了缺乏自動化外,將.once的結果推入數組,將其添加到$ scope並使用ngRepeat?有什麼問題? – bennlich

+0

是的,我最初測試它時有一個bug;我已經更新了這個問題。 – hiattp

回答

1

我認爲你要找的是AngularFireFirebaseIndex的組合。我還沒有檢查,結合這些仍然有效,但Kato reports it has in the past

忽略了一秒鐘,不過,我看不出有什麼毛病你提出的計劃:

push the result of .once into an array, add it to the $scope and use ngRepeat

在這種情況下,加藤的FirebaseIndex將可能仍然是有用的,所以肯定檢查了這一點。

+0

對這兩個問題都有很好的調用,當我嘗試將'.once' val更早地推入'$ scope'數組時,我必須有一個錯字。這樣的工作,但顯然不會實時更新。 Kato的FirebaseIndex/AF解決方案看起來不錯,但給我一個錯誤,我提交了一篇文章給你提到的GG [線索](https://groups.google.com/forum/#!topic/firebase-angular/53yA9NaHktw)。對你起作用嗎? – hiattp

+0

@bennlich我已經測試了AngularFire 0.3和FirebaseIndex 0.0.4,並且正常工作。謝謝你的提示。 –

+0

好了,它可以和'angularFireCollection'一起工作(太棒了!),但當我嘗試將FirebaseIndex作爲隱式數據綁定('angularFire')的引用時,仍然收到錯誤:'錯誤:我無法處理此事件類型:值'。無論如何,現在已經夠好了,謝謝@bennlich。 – hiattp