Erzeuge ein neues Objekt in eckig

8

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.

%Vor%     
Andres Quintero 29.09.2016, 00:59
quelle

2 Antworten

7

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.

%Vor%

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

%Vor%

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

senden %Vor%

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

angular.copy ()

angular.extend ()

    
charlietfl 29.09.2016, 01:46
quelle
1

Versuchen Sie, diese Zeile in Ihrem Code zu entfernen. usuario = neues Objekt ();

Sie müssen kein anderes Objekt erstellen.

    
Ganesh Hegde 29.09.2016 01:13
quelle

Tags und Links