Ich bin neu in der Programmierung und habe ein Problem mit einem Speicherkonzept.
Ich habe eine Benutzer Seite, die die Benutzer in der Datenbank durch eine ng-Wiederholung anzeigt, und jeder Benutzer hat eine Option zum Bearbeiten oder Löschen.
Ich habe auch eine Schaltfläche auf dieser Seite, um einen neuen Benutzer hinzuzufügen. Mein Problem ist, dass beim Bearbeiten eines Benutzers die Informationen für diesen Benutzer im Speicher verbleiben. Deshalb; Wenn ich auf "Neu" klicke, werden die Felder mit dem letzten Benutzer gefüllt, den ich bearbeitet habe.
Unten ist mein Code, wie kann ich ein neues Objekt erstellen, wenn ich auf einen neuen Benutzer klicke.
Einige Grundlagen und Vereinfachungen.
Wenn Sie ein Objekt auf ein Array schieben, wird keine Kopie des Objekts erstellt object..it ist eine Referenz auf dieses Objekt. Dies ist ein kritisches Konzept in JavaScript zu verstehen und grundlegend für viele Arbeiten mit eckigen
Wenn Sie dasselbe Objekt bearbeiten, nachdem Sie es zum Array verschoben haben, werden beide Instanzen bearbeitet, da beide Referenzen auf genau dasselbe Objekt sind. Dies ist wahrscheinlich Ihr "Speicher" Problem.
Wir können angular.copy()
verwenden, um dort zu helfen.
Ein weiterer sehr hilfreicher Teil von angular ng-model
ist, dass Sie nicht alle Eigenschaften eines Objekts für ng-model
einstellen müssen. Wenn eine Eigenschaft nicht existiert, erstellt ng-model
sie.
Das bedeutet, dass wir usario einfach auf ein leeres Objekt zurücksetzen können:
%Vor%Bearbeiten Sie dann dieses Objekt im Formular, und wenn es vollständig ausgefüllt und validiert wurde, drücken Sie eine neue Kopie in das Array und setzen Sie es erneut zurück
Wenn Sie jetzt einen vorhandenen Benutzer bearbeiten möchten, müssen Sie nicht alle Werte jeder Eigenschaft manuell in usario
kopieren, wir können angular.extend()
verwenden, um dies für uns zu tun
Jetzt wurden alle Eigenschaften von usuarioEditar
verwendet, um die Eigenschaften von usario
zu überschreiben oder sie zu erstellen, wenn sie nicht dort waren.
Ähnlich, wenn $http
zum Senden von usario
verwendet wird, können wir das ganze Objekt
Wie Sie sehen können, wird dies die gesamte Objektverarbeitung erheblich vereinfachen und viel Zeit und Code einsparen.
Hoffentlich beantwortet das einige Ihrer Fragen und hilft Ihnen, vorwärts zu gehen
Referenzen
Versuchen Sie, diese Zeile in Ihrem Code zu entfernen. usuario = neues Objekt ();
Sie müssen kein anderes Objekt erstellen.
Tags und Links javascript angularjs