AngularJS Firebase-Datenbank aktualisiert ein Feld nach Kontrollkästchen

8

Ich möchte die Daten in einer Tabelle aktualisieren, die die Firebase-Datenbank anzeigt.

Jede Zeile in der Tabelle repräsentiert die Daten eines bestimmten Benutzers. Mein Ziel ist es, die Daten in einem Feld von Benutzerdaten aktualisieren zu können. In diesem Beispiel versuche ich, die Benutzerrolle basierend auf einem Ankreuzfeld ng-true-value="'admin'" ng-false-value="'user'" zu ändern.

Wie kann ich die Benutzerkennung der Zeile, die ich gerade bearbeite / aktualisiere, in die Update-Funktion übernehmen? Zur Zeit nimmt der Code die aktuelle Benutzerkennung an.

Die Funktion, die ich benutze Update Benutzerinfo ist:

%Vor%

die HTML-Ansicht:

%Vor%

Derzeit wird nur der aktuelle Benutzer aktualisiert, und es wird auch ein überprüfter Wert für alle Benutzer beibehalten, jedoch nicht nur der aktuelle Benutzer selbst.

    
cplus 09.11.2016, 00:06
quelle

3 Antworten

1

Das liegt daran, dass Sie sich auf den aktuellen Benutzer bei jedem Update beziehen, das Sie für die Datenbank ausführen. DatabaseRef.ref('users/' + myuser.uid).update(updated_user_info) Sie aktualisieren denselben Benutzer die ganze Zeit, Sie müssen die ID von dem Benutzer erhalten, den Sie aktualisieren möchten. etwas wie das:

%Vor%

Und erhalte die ID in deiner Funktion

%Vor%     
Jumar Polanco 11.11.2016, 14:17
quelle
3

Wenn ich du wäre, würde ich die ng-change Direktive anstelle von ng-click verwenden. Die ng-change -Direktive wird jedes Mal ausgelöst, wenn sich der Wert des Kontrollkästchens ändert.

HTML

%Vor%

Wie Sie im obigen HTML sehen können, können wir das Benutzermodell an unsere updateRole-Funktion übergeben und den Rest von dort behandeln.

JS

%Vor%

Wie Sie sehen können, hat sich Ihre Update-Funktion ein wenig verändert. Jetzt können Sie das uid vom Objekt user erhalten und weitermachen.

    
Sarantis Tofas 12.11.2016 17:04
quelle
1

Wie in einer anderen Antwort erwähnt, liegt es daran, dass Sie nur einen Benutzer aktualisieren. Sie haben bereits den Benutzer, den Sie mit dem 'obj' von Ihrem ng-repeat aktualisieren möchten, also müssen Sie die Datenbank nicht erneut aufrufen, um den Benutzer zu erhalten, den Sie aktualisieren möchten.

Aus den Firebase-Dokumenten: "Sie können den aktuell angemeldeten Benutzer auch mithilfe der currentUser-Eigenschaft abrufen." Durch diese Logik wird der aktuelle Benutzer immer derjenige sein, der das Kontrollkästchen bearbeitet, und ich bin sicher, dass Sie nicht möchten, dass Benutzer sich selbst zu Administratoren machen.

%Vor%

Und deine js sollte aussehen

%Vor%     
Drew Hill 11.11.2016 18:22
quelle