是否可以在模板中包含模板?也许类似于ERB处理部分的方式?
而不是尝试以ERB之类的方式呈现嵌套模型,最好让Backbone.js处理这个问题.
注意,我使用的是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()
Run Code Online (Sandbox Code Playgroud)
模型Project有一个名为sessions的嵌套集合:
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)
Run Code Online (Sandbox Code Playgroud)
ProjectSessions.ShowView
template: JST["backbone/templates/project_sessions/show"]
render: ->
$(this.el).html(@template(@model.toJSON() ))
Run Code Online (Sandbox Code Playgroud)
所以,最后我们有这样的嵌套模板:
目前我有带有rails后端的骨干RIA.我正在使用haml_coffee_assets gem进行客户端模板化.但我想念那里的铁路视图助手.
我决定将原始html字符串添加到我的骨干模型中.所以,我的coffeescript中有这种对象
Object
avatar: "/avatars/small/missing.png"
avatar_link: "<a href="/users/ortepko" class="author" id="user-nick-76"><img src="/avatars/small/missing.png" width="32" /></a>"
humanized_messages_number: "1 Message "
id: 76
login_name_link: "<a href="/users/ortepko" class="author" id="user-nick-76">ortepko</a>"
Run Code Online (Sandbox Code Playgroud)
我的模板代码变得非常简单
.text_content
.comment
= @contact.avatar_link
.text
= @contact.login_name_link
.messages
%a{href: '#'}
= @contact.humanized_messages_number
Run Code Online (Sandbox Code Playgroud)
现在我想渲染一个模板
JST['messages/yet_another_template'] {contact: contact}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有奏效.