¿Es posible incluir una plantilla dentro de una plantilla? Tal vez algo similar a la forma en que ERB maneja parciales?Backbone.js con plantillas Eco: ¿cómo incluir una plantilla dentro de una plantilla?
En lugar de intentar renderizar modelos anidados de una manera como ERB, es mejor dejar que Backbone.js se encargue de esto.
Nota, estoy usando la sintaxis CoffeeScript:
Projects.IndexView
template: JST["backbone/templates/projects/index"]
addAll:() ->
@options.projects.each(@addOne)
addOne: (project) ->
view = new Worktimer.Views.Projects.ProjectView({model : project})
@$("#projects-table").append(view.render().el)
render: ->
$(@el).html(@template(projects: @options.projects.toJSON()))
@addAll()
el modelo de proyecto ha llamado una colección anidada sesiones:
Projects.ProjectView
template: JST["backbone/templates/projects/project"]
$(@el).html(@template(@model.toJSON()))
for s in @model.sessions.models
v = new Worktimer.Views.ProjectSessions.ShowView(model: s)
$(@el).find('.sessions').append(v.render().el)
ProjectSessions.ShowView
template: JST["backbone/templates/project_sessions/show"]
render: ->
$(this.el).html(@template(@model.toJSON()))
así, al final nos hemos anidado plantillas de la siguiente manera:
- Proyectos Índice
- Proyecto
- Sesión
- Sesión
- Sesión
- Sesión
- Proyecto
- Sesión
- Proyecto
- Sesión
- Sesión
- Proyecto
esto sería dentro de Eco, por lo que sugeriría hacer file.jst.eco.erb? – miketucker
Cuantas más extensiones agregue, más procesadores serán utilizados. –
Además, dado que ECO y ERB usan '<%= %>', ¡ERB devoraría todas las interpolaciones antes de que ECO lo haga! :) – micapam