Załóżmy, że istnieją 2 kolekcje, reprezentujące odpowiednio /api/page/1
i /api/page/2
; czy tak jest (na przykład przez Underscore), aby połączyć te 2 Kolekcje w nową, pojedynczą Kolekcję?Szkielet - Połącz 2 kolekcje razem?
Odpowiedz
Wariant 1
Jeśli nie przyniosła jeszcze kolekcję można pobrać pierwszy z nich, a następnie pobrać drugi z {dodać: true} flagi a drugi będzie zostać połączone w pierwszy:
collection.fetch({data : {page : 2});
=> [{id: 1, article : "..."}, {id: 2, article : "..."}];
collection.fetch({data : {page : 2}, add : true });
=> [{id: 1, article : "..."}, {id: 2, article : "..."}, {id: 3, article : "..."}];
Wariant 2
Jeśli you'v e już pobrane zbiory i je przechowywać w dwóch zmiennych, można po prostu dodać całą zawartość drugiego zbioru do pierwszego:
collection1.add(collection2.toJSON());
Ta opcja cierpi z powodu faktu, że pierwszy zbiór będzie ogień „dodaj "zdarzenie, gdy zostanie do niego dodana druga kolekcja. Jeśli to ma skutki uboczne, takie jak niepożądanego UI, który wczyta z powodu tego wydarzenia, można stłumić go dodając {cichy: true} flagę
collection1.add(collection2.toJSON(), {silent : true});
Wariant 3
Jeśli wystarczy format JSON tych kolekcji, tjszablon HTML dla celów renderingu, można po prostu zredukować wszystko do literałów js (tablic, obiektów):
collection1.toJSON().concat(collection2.toJSON());
=> [{id: 1, article : "..."}, {id: 2, article : "..."}, ...];
opcja 4 = Opcja 2 + 3
Jeśli już pobrane zarówno kolekcje, ty można zredukować do literałów JS i dodać wszystko do świeżej Backbone kolekcji
var rawCollection = collection1.toJSON().concat(collection2.toJSON());
var newCollection = new Backbone.Collection(rawCollection);
Wydaje mi się, że w ten sposób tracisz semantyczną więź z /api/page/{1, 2}/
.
Wydaje mi się również, że ani szkielet, ani podkreślenie, nie zapewnia funkcji/metody, która dokładnie to, co próbujesz zrobić.
więc opcje:
- utworzyć nową kolekcję, dodać każdy element z poprzednich zbiorów;
- dodać elementy pierwszy zbiór do drugiego
Ale pewnie już o tym wiedział.
Tak. Myślę, że rozwiązaniem jest tutaj 1 kolekcja i "pobieranie" ({data: {strona: 1}, dodanie: true}). Zwiększ wartość strony za pomocą każdej funkcji 'fetch()' i dodaj najnowszą partię/stronę modeli do kolekcji. – jmk2142
Twoje rozwiązanie wydaje się całkiem ładne, ale wydaje mi się, że ma już pobrane kolekcje i prawdopodobnie chce uniknąć ponownego pobierania danych. Ale jeśli tak jest, to twoja droga to Dobra Droga. – ksol
collection.add(models, [options])
Collection jest szereg modeli
collection.models
powraca wachlarz modeli
Dodaj model (lub tablicę modelach) do kolekcji.
A = Backbone.Collection;
collection1 = new A([
{key, 'value'}, //model1
{key : value1} //model2 in collection1
]);
B = Backbone.Collection;
collection2 = new B([
{key1, 'value'}, //model1
{key1 : value1} //model2 in collection2
]);
collection1.add(collection2.models); //now, collection1 has four models..
Collection.models zapewnia bezpośredni dostęp do tablicy moels i Collection.add odbędzie szereg modeli jako argument.
użycie
collection.models
insted
collection.toJSON()
spróbować, kolekcja jest szereg modeli
collection1.add(collection2.models);
jeśli używamy
collection1.add(collection2.toJSON());
następnie referencyjny numer
+1 To jest jedyna prawdziwa odpowiedź, naprawdę powinna być zaakceptowana. Zobacz dokumentację: http://backbonejs.org/#Collection-add. Możesz też zdecydować, czy chcesz akceptować duplikaty, czy nie, przekazując: {scal: true} –
- 1. Połącz dwa UIScrollView razem
- 2. Połącz dwie elokwentne kolekcje i usuń wszystkie duplikaty.
- 3. Połącz cztery obrazy razem przy użyciu Node.js i GraphicsMagick
- 4. Szkielet bez bazy danych
- 5. Szkielet dynamicznie przełącza szablony
- 6. Szkielet - Jak wyciąć kolekcję?
- 7. Połącz AWS - Cyberduck
- 8. Ogólne kolekcje PowerShell
- 9. Scal kolekcje w wyroczni?
- 10. Połącz dane wyjściowe z 2 zapytań w interfejsie API REST
- 11. czynienia z JAXB Kolekcje
- 12. Dobry, bezpłatny szkielet logowania Delphi
- 13. Jak wyświetlić MeshElement3D jako szkielet?
- 14. Szkielet przechodzący model do routera
- 15. Micro-benchmark porównujący zmienne, niezmienne kolekcje Scala z java.util.concurrent. * Kolekcje
- 16. Jak debugować Kotlin sekwencje/Kolekcje
- 17. Paged kolekcje w Backbone.js
- 18. kolekcje scala bufor okrągły
- 19. kolekcje do filtrowania lambdaj
- 20. Standardowe kolekcje SDK iOS
- 21. Kolekcje Java (struktura LIFO)
- 22. Kolekcje Scala niekonsekwencje
- 23. Debugger Eclipse i kolekcje
- 24. Jak zerwać wiele atrybutów z kolekcji Szkielet?
- 25. Stwórz pełny szkielet 3D z Kinect SDK
- 26. Połącz dwie tablice, zachowując klucze numeryczne
- 27. JPA chce załadować kolekcje FetchType.LAZY
- 28. mongodump ignoruje niektóre określone kolekcje
- 29. Rozwiń i połącz panda DataFames
- 30. Jak używać kątowego 1.3.4 i kątowego 2 razem
Dzięki za dokładne wyjaśnienie =) – Kay
-1. Jeśli wywołasz funkcję JSON(), utracisz odniesienie do modeli. Jeśli utworzysz model, wstaw go do kolekcji, połącz kolekcję z inną, zmień model, model z ostatniego zbioru nie jest aktualizowany. To będzie koszmar do debugowania. Byłoby dobrze, gdybyś chciał skopiować modele i zachować je w separacji, ale to nie jest norma i należy to podkreślić. –
Jeśli masz już dwie kolekcje, prawdopodobnie powinieneś używać jednej z poniższych odpowiedzi: 'collection1.add (collection2.models);' –