我与div的模板#entries
,并#movies
在我#entries
的div我展示我的电影收藏的车型。在我的#movies
div中,我显示了searchquery的结果。(我同意,元素的命名很糟糕)。
在呈现模板的视图中,我有以下事件,
events: ->
"click li": "addEntry"
"click .remove": "destroyEntry"
addEntry: (e) ->
movie_title = $(e.target).text()
@collection.create title: movie_title
appendEntry: (entry) ->
view = new Movieseat.Views.Entry(model: entry)
$('#entries').append(view.render().el)
destroyEntry: (e) ->
thisid = @$(e.currentTarget).closest('div').data('id')
@collection.get(thisid).destroy()
li元素在#movies
div中呈现。这样,我可以从其他视图中单击结果,并将其添加到其他集合中。这行得通,但是有问题。
以同样的观点,我有这个,
initialize: ->
@collection.on('change', @render, this)
@collection.on('add', @appendEntry, this)
@collection.on('destroy', @render, this)
return
问题在于,当集合发生更改时(例如当我添加或删除电影时),它会重新呈现模板。这意味着它会放弃#entries
and和#movies
div。但是现在它仅呈现一个空的#movies
div(没有searchquery集合)。
所以我想知道是否可能仅渲染模板的一部分。在这种情况下,我只想重新显示#entries
div,而只留下#movies
div。
您可以尝试以下方法:
@collection.on('change', @renderEntries, this)
renderEntries: (entry) ->
$('#entries').html(render('entries', { entries: yourEntriesCollection.toJSON() }))
//some common.js file
function render(template_name, data)
{
//here create logic to render specified template by name with data.
// see example here: http://stackoverflow.com/questions/8366733/external-template-in-underscore
return html;
}
您应该为可以单独呈现的条目创建模板。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句