2013-06-18 14 views
8

Angenommen, ich habe eine todo-Anwendung und klicke auf ein Kontrollkästchen für eine beliebige Todo, markiert sie als abgeschlossen und führt eine PUT-Operation aus.Kann die eckige Ressource eine umfangreiche, erholsame Operation durchführen?

Dann gibt es ein Kontrollkästchen, um 'alle vollständig' oder 'alle unvollständig zu markieren'. Dies sollte jeden Todo als abgeschlossen/unvollständig markieren, unabhängig von seinem individuellen Status.

Bei der Verwendung von angular-resource, was ist der beste Weg, um alle Elemente zu aktualisieren. Ist es möglich, dies in einer einzigen Massenanfrage zu tun und alle Artikel zu aktualisieren? Oder wäre es besser, wenn ich jeden einzeln aktualisiere?

+0

Diese Art hängt von der API ab, nicht wahr? Sie können sie alle mit einer $ http-Anfrage senden, wenn die API solche Massenladungen unterstützt. Andernfalls können Sie die Elemente durchlaufen und update() ausführen. – finishingmove

+0

Das klingt nach einer anderen Art von Objekt/Dienst. Ich würde einen anderen Dienst namens TodoBulkService erstellen und die Factory erweitern, um mit Massenaktionen umzugehen. –

+0

Die API kann damit umgehen oder kann damit umgehen. Unter der Annahme, dass api "ideal" ist, was auf der eckigen Seite zu tun ist, was muss eckig an die API senden und was erwartet sie zurück? Ich weiß, dass eckige Ressource benutzerdefinierte Aktionen haben kann, die auf Array-Ebene funktionieren, ist das eine mögliche Lösung? –

Antwort

4

Sie könnten Ihre Angular Ressource, indem eine benutzerdefinierte Aktion, zum Beispiel erweitern:

var Todo = $resource('api/todo/:todo_id', {todo_id: '@id'}, { 
    markAllComplete: { method: 'POST', params: { complete: true }, isArray: true } 
} 

und dann in Ihrem Controller zu tun:

// Assuming your todos have been fetched and are stored 
// in the $scope.todos variable... 
Todo.markAllComplete($scope.todos); 

Das einzige, was (und wohl die härteste Sache) zu tun wäre, Ihr Backend zu kodieren, um einen POST zu 'api/todo' zu akzeptieren und alle referenzierten Todos als abgeschlossen zu markieren.

+0

Dies ist nicht erholsam. Es ist rpc. – bruno

Verwandte Themen