2016-07-23 9 views
0

Nachdem einige Objekte meine Firebase Sync-Datenbank drücken, und Abrufen von ihnen, erhalte ich die folgende Reihe:Firebase Datenbank: Kann nicht Schleife durch .push() 'ed Array

(index)     products time 

-KNOR5bBgf1ilVehk7BI Array[1] "22:26:47" 
-KNORdccyvXat8wsP0SF Array[2] "22:29:10" 

Wenn Firebase des .push mit() , Firebase generiert eine zufällige ID wie die obige.

Nachdem sie mit Aurelia Schleife versucht (mit repeat.for)

<order-details repeat.for="order of bill.orders" order.bind="order"></order> 

ich folgenden Fehlermeldung

aurelia-task-queue.js:40 Uncaught TypeError: Cannot read property 'getCollectionObserver' of null_observeCollection @ repeat.js:152itemsChanged @ repeat.js:99selfSubscriber @ aurelia-templating.js:3122call @ aurelia-templating.js:2989flushMicroTaskQueue @ aurelia-task-queue.js:117(anonymous function) @ aurelia-task-queue.js:61 

ich bin ziemlich sicher, dass es mit den Tasten (Indizes) zu tun hat , weil vor Ich habe einen inkrementellen Index (0, 1, 2, 3, ...) und es funktionierte einwandfrei. EDIT: Ich habe mit anderen Tasten wie "0" und 2 experimentiert und sie funktionieren auch nicht. Scheint Aurelia kann nur durch Arrays, die mit 0 beginnen zu wiederholen?

Warum passiert das?

+0

Ich bin neugierig. Wie verwenden Sie Firebase, ist es nur das Skript-Tag über das CDN oder verwenden Sie ein Plugin? Weil ich Firebase in meiner öffentlichen App [hier] verwende (https://github.com/Vheissu/pokego.run-public/blob/master/src/home.ts#L91), die nicht über ein Plugin läuft, einfach Das Firebase-CDN-Skript zur Verfügung gestellt und es funktioniert gut. Ich erhalte die Daten in meinem Viewmodel und drücke sie, auch mit eindeutigen IDs. –

+0

Hallo Dwayne, du hast mir auch in einer anderen Frage geholfen ... http://stackoverflow.com/questions/38361421/error-container-has-not-been-made-global-how-to-solve Ich bin kein Plugin, nur das Script-Tag. Haben Ihre Firebase-Daten auch diese einzigartigen Firebase-IDs? –

+0

@DwayneCharrington, können Sie den vollständigen Code meines Projekts hier finden: https://github.com/rclaes1995/aurelia-register –

Antwort

4

Sie versuchen, repeat.for zu verwenden, um ein Objekt und nicht ein Array zu durchlaufen. Sie müssen es in ein Array konvertieren, um es über die Eigenschaften des Objekts zu wiederholen. Lesen Sie diesen Artikel: http://ilikekillnerds.com/2015/08/iterating-objects-using-repeat-for-in-aurelia/

Wenn Sie sie geändert 0,1,2 Javascript liest es als:

orders[0] 
orders[1] 

Javascript sieht, dass als Array.

Was Sie haben, ist dies:

orders['-KNOR5bBgf1ilVehk7BI'] 
orders['-KNORdccyvXat8wsP0SF'] 

Javascript sieht dies als ein Objekt. Sie können die Eigenschaften eines Objekts nicht ohne einen Wertkonverter mit Aurelias repeat.for durchlaufen.

Da es einen Wertkonverter durchlaufen muss, müssen Sie möglicherweise einen Binding Singler einrichten, um die Wiederholung zu informieren. Sie können ein einfaches Beispiel dafür hier finden: Update Aurelia observed property on change to containing array

+0

Vielen Dank! –