AngularJS benutzerdefinierte Modellobjekte mit Methoden?

8

Wenn Sie eine JSON $ -Ressource haben, wie können Sie die resultierenden Objekte in spezifischere Objekte umwandeln, sobald sie erhalten sind?

Zum Beispiel kommen sie jetzt als ein Array von Objekten zurück, aber ich möchte, dass sie als Array von "Termin" -Objekten zurückkommen, so dass ich einige Methoden für dieses Termin-Objekt haben kann, die Fragen dazu beantworten würden Terminobjekt Bsp: Hat dieser Termin irgendwelche damit verbundenen Dienstleistungen? Ist dieser Termin am Morgen oder Nachmittag?

Zuerst dachte ich, transformResponse-Hook würde von ngResource funktionieren, aber das scheint nicht zu funktionieren. Die Rückkehr von diesem ist nicht die tatsächlichen Gegenstände. Scheint, dass mit dieser Funktion nur die tatsächlichen Daten vor dem JSON-Parsing geändert werden können.

Abschließend frage ich, ob das überhaupt eine richtige angularJS-Technik ist? Oder sollten diese Hilfsmethoden nur in einem Controller oder einem anderen Modul angezeigt werden und das zu bearbeitende Objekt akzeptieren? Ich denke nur, dass es sauberer ist, sie in das Objekt einzuwickeln, aber ich gebe zu, dass ich in angularJS nicht sehr erfahren bin.

    
jr. 18.08.2013, 15:19
quelle

1 Antwort

22

Wenn Sie eine Factory verwenden und eine Funktion hinzufügen möchten, können Sie beispielsweise die Funktion dem Prototyp des zurückgegebenen Elements hinzufügen ( DEMO ):

%Vor%

Und dann Zugriff auf Ihre Ressource in der Steuerung:

%Vor%

Oder direkt in der Ansicht zum Beispiel eine ng-Wiederholung:

%Vor%

Um Ihre letzte Frage zu beantworten, denke ich, dass die obige Lösung eine richtige Angularjs-Technik ist. Sobald Sie Funktionen zu einem bestimmten Ressourcentyp zugeordnet haben, ist es meiner Meinung nach am besten, sie direkt an das entsprechende Ressourcenobjekt anzuhängen. Warum sollten Sie Hilfsfunktionen im Controller erstellen, wenn Sie die Ressource als Parameter übergeben müssen und die Funktionen außerdem in mehreren Controllern oder Bereichen verwendet werden können?!

    
Marcel Gwerder 18.08.2013, 16:19
quelle

Tags und Links