Como con la mayoría de las cosas Backbone.js, no obtendrá una respuesta "correcta" a esto, pero puedo compartir cómo lo hago. Con ambos modelos y puntos de vista, por lo general las siguientes pautas:
Vistas y modelos deben ser instanciadas por el componente que es "responsable" de ellos. Para modelos o vistas con relaciones padre/hijo claras, el modelo padre debe crear instancias, generalmente en el método initialize()
.
Los padres deben vincularse a los eventos secundarios en el momento de la creación de instancias.
Los padres deben estar "al tanto" de los niños, y pueden llamar a los métodos secundarios si es necesario. Normalmente utilizaría este método para activar un evento secundario, ya que es más explícito. Intento mantener a los niños independientes de sus padres, comunicando hacia arriba a través de los eventos. Entonces sí, los modelos profundamente anidados se comunicarían a través de cadenas de eventos.
A veces .set()
niños como atributos Backbone, pero generalmente solo uso atributos de JavaScript simples (por ejemplo, this.child
). Depende del contexto. El uso de atributos Backbone proporciona eventos change
, por lo que si necesita supervisar si un niño cambia, úselo. Los atributos de red troncal también le brindan la capacidad de establecer en el momento de instanciación, p. var myModel = new Model({ other: otherModel })
- pero debido a que los padres suelen crear instancias de sus hijos, esto no se aplica realmente en ese caso, y generalmente utilizo ese patrón para las relaciones modelo-modelo no jerárquicas. En la mayoría de los casos, configuro los niños como atributos de Javascript sin formato.
buena respuesta. Agradezco que haya más de un mejor enfoque canónico –