Come per la maggior parte di Backbone.js, non si otterrà una risposta "giusta" a questo, ma posso condividere come lo faccio. Con entrambi i modelli e punti di vista, io in genere seguire queste indicazioni:
Visualizzazioni e modelli dovrebbero essere istanziati dal componente che è "responsabile" per loro. Per i modelli o le viste con relazioni padre/figlio chiare, il modello principale dovrebbe creare un'istanza, solitamente nel metodo initialize()
.
I genitori devono legarsi agli eventi secondari al momento dell'istanziazione.
I genitori devono essere "consapevoli" dei bambini e possono chiamare i metodi figli, se necessario. In genere, utilizzerei questo metodo per attivare un evento figlio, in quanto è più esplicito. Cerco di tenere i bambini indipendenti dai loro genitori, comunicando verso l'alto attraverso gli eventi. Quindi sì, i modelli profondamente annidati avrebbero comunicato attraverso le catene di eventi.
Talvolta sono i bambini .set()
come attributi Backbone, ma in genere si utilizzano solo attributi JavaScript semplici (ad esempio this.child
). Dipende dal contesto. L'uso degli attributi Backbone fornisce gli eventi change
, quindi se devi monitorare se un bambino cambia, usali. Gli attributi Backbone ti danno anche la possibilità di impostare al momento dell'istanziazione, ad es. var myModel = new Model({ other: otherModel })
- ma poiché i genitori di solito creano un'istanza per i propri figli, in questo caso non si applica realmente e di solito utilizzo tale modello per relazioni modello-modello non gerarchiche. Nella maggior parte dei casi, ho impostato i bambini come semplici attributi Javascript.
bella risposta. Apprezzo che ci sia più di un approccio canonico migliore –