2011-10-03 8 views

Respuesta

14

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.

+0

buena respuesta. Agradezco que haya más de un mejor enfoque canónico –

3

Me gusta @nrabinowitz 'answer. cubrió todos los detalles correctos.

sólo quería echar un vistazo a la idea de usar algo como Backbone.Relational que se encarga de todo esto para usted: https://github.com/PaulUithol/Backbone-relational

+0

Terminé teniendo problemas similares a esta pregunta de backbone-rel, ¿alguna idea? ¿Creo que podría estar esperando un comportamiento diferente de los modelos creados automáticamente? http://stackoverflow.com/questions/7685791/backbone-relational-events-not-firing – boom

Cuestiones relacionadas