Jak @mu_is_too_short skomentował Backbone relacyjne może być coś jesteś zainteresowany patrząc. Dzięki Backbone-relational modele i kolekcje submodel są tworzone automatycznie, a zdarzeniami można zarządzać w relacji rodzic-dziecko.
Po prostu podam ci przykładowy kod, abyś mógł go posmakować. Część przykładowego kodu może wyglądać mniej więcej tak.
Użytkownik ma wiele imprez:
User = Backbone.RelationalModel.extend({
relations: [
type: Backbone.HasMany, // Type of relationship
key: 'events', // How we reference the sub-models in collection
relatedModel: 'Event', // The sub-model type
collectionType: 'EventCollection', // The sub-model collection
reverseRelation: {
key: 'belongsToUser' // Key we use to refer to the parent
}
],
// Other Backbone.Model properties and functions
});
Podczas tworzenia modelu Backbone-relacyjny, to automatycznie tworzy kolekcję podmodeli dla Ciebie nazwanych „klucza”, który wyznacza. Tak więc każdy użytkownik, który posiadasz, będzie miał uporządkowany zbiór powiązanych ze sobą zdarzeń.
Zasadniczo, po utworzeniu lub pobraniu użytkownika podaje się odniesienia do powiązanych modeli, których potrzebuje. Na przykład Twój identyfikator użytkownika = 1 może wymagać zdarzeń 5, 7 i 11. (używam tylko identyfikatorów). Dopóki te odniesienia są zdefiniowane w formie tablicy, możesz leniwie ładować je za pomocą metod FetchRelated Relational.
myUser = new User();
myUser.set({
name: 'RayMysterio',
age: '26',
events: [5, 7, 11] // Or this might just come with the User object from your server
});
myUser.fetchRelated('events');
// This will go fetch the related events for this user model from the URL you designate.
myUser.get('events');
// The collection of events are treated like an attribute of the User model.
myUser.get('events').find(function(eventModel){
return // some find condition - or whatever you want to do on that collection
});
Możecie chcą wiązać pewne słuchaczy cząstkowych modeli.
myUser.bind('add:events', function(model, collection) {
// Whatever code you want to happen when new models are added to the user events coll
});
Itp Itd
Jest to miły sposób wytwarzania jeden do jednego, jeden do wielu, i odwrotne relacje. To całkiem niezły klucz. Kiedy definiujesz relację między modelami i tworzysz model.
E.g. tworzysz nową instancję modelu użytkownika.
Relacja szkieletowa automatycznie tworzy odsyłacz odwrotny (model zdarzenia ma atrybut zdefiniowany przez klucz odwrotnej relacji "belongsToUser" (lub jakkolwiek go nazwiesz), co sprawia, że bardzo przydatne jest przechodzenie w górę iw dół modelu/podrzędu Model hierarchia.
podstawie relacyjnych potrzeb wydaje się dobrym dopasowaniem.
Jeśli chcesz wiele do wielu, jest okrągłe o sposób to zrobić (przy użyciu modeli pośrednich), ale znalazłem To jest trochę nieudolne i unikam tego ... Paul-Uithol od jakiegoś czasu aktualizuje Backbone-Relational, a nowe funkcje wciąż są dodawane. Krzywa uczenia się początkowo była dla mnie trochę trudna, ale gdy zaczynasz przyzwyczaić się do tego, jest bardzo przydatny.
UWAGA: Dla podkreślenia, Mosselman poleca Require.js i ja też się z tym w pełni zgadzam. Dzięki temu mój kod jest znacznie łatwiejszy w zarządzaniu. Możesz tinkerować (owijać) kod relacyjny Backbone, aby był zgodny z AMD i działa bezbłędnie z Require.
UPDATE: kręgosłup-relacyjny wspiera teraz require.js jak wydania 0.8.8 w dniu 1 kwietnia 2014 roku - dzięki Kenneth
Czy to możliwe, aby odnosić się do zdarzeń z użytkownikiem za pomocą modelu zdarzeń? 'myUser.set ('events', [myEvent1, myEvent2, myEvent3]);' coś w tym stylu? Czy musisz odwołać się do relacji za pośrednictwem powiązanego identyfikatora modelu? –
@orangewarp backbone-relational obsługuje teraz require.js od wersji 0.8.8 1 kwietnia 2014. Zobacz http://backbonerelational.org/#change-log – Kenneth