2013-06-18 5 views
8

Powiedz, że mam aplikację todo i klikając pole wyboru na dowolnym indywidualnym todo oznacza ją jako kompletną i wykonuje operację PUT.Czy kanoniczny zasób może wykonać dużą operację?

Następnie jest zaznaczone pole wyboru "Oznacz wszystkie kompletne" lub "Oznacz wszystko jako niekompletne". Powinno to oznaczać każde todo jako ukończone/niekompletne, niezależnie od tego, jaki jest jego indywidualny status.

Podczas korzystania z angular-resource, jaki jest najlepszy sposób na aktualizację wszystkich produktów. Czy można to zrobić w pojedynczym wniosku zbiorczym i czy wszystkie elementy zostały zaktualizowane? Czy byłbym lepszy, po prostu aktualizując każdy indywidualnie?

+0

Ten rodzaj zależy od API, prawda? Możesz wysłać je wszystkie za pomocą jednego żądania $ http, jeśli API obsługuje takie masowe ładunki. W przeciwnym razie możesz zapętlić elementy i zrobić .update() na każdym z nich. – finishingmove

+0

To brzmi jak inny typ obiektu/usługi. Stworzyłbym inną usługę o nazwie TodoBulkService i rozszerzyłem fabrykę, aby poradzić sobie z akcjami masowymi. –

+0

Api może go obsłużyć lub można go obsłużyć. Zakładając, że api jest "idealne", co należy zrobić po stronie kątowej, co jest potrzebne do przesłania do interfejsu API i czego spodziewa się odzyskać? Wiem, że zasoby kątowe mogą mieć niestandardowe akcje, które działają na poziomie macierzy, czy jest to możliwe rozwiązanie? –

Odpowiedz

4

Można przedłużyć kątowa zasobu poprzez zapewnienie akcję niestandardową, na przykład:

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

a następnie w kontrolerze robi:

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

Jedyną rzeczą (i prawdopodobnie najtrudniejszą rzeczą) pozostało do zrobienia byłoby zakodować backend, aby zaakceptować POST do "api/todo" i oznaczyć wszystkie todos odniesienia jako zakończone.

+0

To nie jest spokojne. To jest rpc. – bruno