2016-08-23 6 views
0

Ich habe einen synchronisierten Objekt, das wie folgt initialisiert:AngularFire/Firebase - Wie löscht man einen Schlüssel, der mehr als eine Ebene tief ist?

var sync = $firebase(ref); 
var syncObject = sync.$asObject(); 
syncObject.$bindTo($scope, 'data'); 

Die synchronisierten Objekt hat die folgende Struktur:

{ 
    levelone: { 
     leveltwo: { 
      valueone: 1 
      valuetwo: 2 
     } 
    } 
} 

Ich möchte mit $remove() einer der Werte entfernen, aber ich bin Mit dieser Methode ist es nicht möglich, etwas anderes als das gesamte Objekt zu löschen.

syncObject.$remove('levelone.leveltwo.valueone'); 

I Objekt die gesamte synchronisiert zu überschreiben nicht $save() verwenden möchten:

Im Folgenden wird das gesamte Objekt löschen.

Gibt es trotzdem einen verschachtelten Schlüssel mit $remove() zu entfernen?

Antwort

0

Es ist nicht möglich, mit der Funktion $remove() mehrere Schichten zu bohren. Am Ende verwendete ich Vanilla Firebase JS-Bibliotheksmethoden, um das Löschen durchzuführen.

var ref = new Firebase(myFirebaseURL); 
// The child() method (from the vanilla JS library) allows you to target keys 
// more than one level deep 
ref.child('levelone/leveltwo/valueone').remove(); 
var sync = $firebase(ref); 

Sie können Kette die child() Funktion des ursprünglichen JS Firebase-Klasse-Objekt aus und führen Sie dann die remove() Methode aus, dass der (beachten Sie, dass dies die remove() Methode und nicht die $remove() Methode).

Verwandte Themen