1

Est-il possible d'écouter ajouter, supprimer, réinitialiser, modifier l'événement d'une collection qui fait partie d'une autre collection? Par exemple: Bibliothèque comportant une collection de livres. Et chaque livre peut avoir plusieurs auteurs. Y a-t-il une manière que je puisse écouter l'événement sur les auteurs dans le modèle de bibliothèque?Backbone écouter pour modifier l'événement sur la collection de la collection

Library.js

var Library = Backbone.Model.extend({ 
    initialize: function() { 
     this.get('books').on('change:authors', this.onChange); 
    } 
} 

Books.js

var Book = Backbone.Model.extend({ 
}) 
var Books = Backbone.Collection.extend({ 
    Model: Book 
}) 

Authors.js

var Author = Backbone.Model.extend({ 
}) 
var Authors = Backbone.Collection.extend({ 
    Model: Author 
}) 
+0

S'il vous plaît clarifier quelques questions. Pourquoi la bibliothèque devrait-elle écouter les changements d'auteur (que fera-t-elle avec ces événements)? Votre serveur livrera-t-il toute la structure de données d'un ensemble de livres avec un ensemble d'auteurs (un point d'extrémité) ou modifiez-vous chaque livre avec les données d'auteur? Avez-vous besoin d'écrire des modifications sur le serveur (les auteurs sont-ils créables/modifiables)? Comment définissez-vous les auteurs de chaque livre si vous modifiez les livres (1ère question)? –

+1

Vous devriez vraiment repenser l'écoute des collections imbriquées comme ça, c'est vraiment inefficace et rigide sur le long terme. J'éviterais même de mettre la collection dans les attributs. Il existe [différentes façons d'imbriquer une collection dans un modèle] (https://stackoverflow.com/a/40823148/1218980), choisissez judicieusement. –

Répondre

1

Oui .. mais à chacun:

this.get('books').forEach(function(book) { 
    book.get('authors').on('change', this.onChage) 
});