Verwendung der OnBeforeSave / onAfterSave-Methoden von Angular-Xeditable mit mehr als $ data als Parameter

9

Bei der ersten Verwendung von Angular-Xeditable mit meiner Anwendung trat ein Problem auf, wenn ich herausfinden wollte, wie eine x-editierbare Änderung in einem Objekt gespeichert werden kann, auf das über eine ng-repeat-Schleife zugegriffen wurde.

Die Dokumentation konzentriert sich in erster Linie auf die Verwendung von onbeforeSave und onaftersave für die Validierung, und während es zeigt, dass es zum Speichern von Dingen verwendet werden kann, zeigen die Beispiele nicht, wie Sie mehr als $ data (oder $ index) an Ihre übergeben onbeforesave / onaftersave-Methode. Die Beispiele zeigen das Speichern von etwas wie $ scope.person, was gut ist, wenn Sie ein Element haben.

Aber was, wenn die dritte Person in einer Liste von 30 bearbeitet wurde? Sie wollen sicherlich nicht alle retten müssen. Wie speichern Sie nur das Objekt, das anstelle von allem im Array bearbeitet wurde?

    
Michael Oryl 02.05.2014, 00:07
quelle

1 Antwort

15

Die Angular-Xeditable-Dokumente machen es nicht ganz klar, aber es scheint, dass $ data (und $ index) nur Werte sind und dass Sie so ziemlich alles, was Sie wollen, an die Methoden zum Speichern / Validieren übergeben können. Also, was Sie tun sollten, ist das Objekt selbst (oder vielleicht nur seine ID) übergeben.

Gegeben das folgende Markup:

%Vor%

Sie würden dann den folgenden Code in Ihrem Controller haben:

%Vor%

Damit können Sie das Speichern so handhaben, wie Sie möchten. Sie müssen nicht nur die $ data oder $ index-Werte verwenden, die Angular-Xeditable liefert. Sie könnten genauso einfach so etwas tun:

%Vor%

Und nur die Namen und Dohickey-Felder für die Person mit dem angegebenen ID-Wert aktualisieren. Sie müssten natürlich die updatePerson () -Methode ändern, um statt dessen eine ID als ersten Parameter und den Namen und Dohickey als zweiten und dritten Parameter zu erwarten.

Beachten Sie auch, dass wenn Sie onBeforeSave anstelle von onAfterSave verwenden, wie hier, p.name noch nicht den neuen Wert hat und Sie müssen wieder $ data verwenden, um den neuen Wert zu erhalten.

    
Michael Oryl 02.05.2014, 00:07
quelle