我刚开始使用backbone.js,我注意到的一件事是有时我不希望任何tagName
包含/封装我的视图的模板代码。如果我把它留在''
or ,我会在我的代码中变得'span'
不必要。div
span
我发现的替代方法是从我的模板中删除包含标签(<div class="photo_box">
在我的示例中如下所示),并将其用作tagName
我的视图。大多数时候,这个标签将包含一个类 ( .photo_box
),我仍然需要执行一个addClass
to (this.el)。我真的不喜欢分散我的模板代码。
还有其他方法吗?
JS
// Views
PhotoListView = Backbone.View.extend({
tagName: 'span',
render: function() {
_.each(this.model.models, function(photo) {
$(this.el).append(new PhotoListItemView({ model: photo }).render().el);
}, this);
return this;
}
});
PhotoListItemView = Backbone.View.extend({
tagName: 'span',
template: _.template($('#tpl-PhotoListItemView').html()),
render: function() {
$(this.el).html(this.template( this.model.toJSON() ));
return this;
}
});
HTML
<!-- Templates -->
<script type="text/template" id="tpl-PhotoListItemView">
<div class="photo_box">
<div class="photo_container">
<img src="img/profiling/<%= photo_id %>.jpg" class='photo' />
</div>
</div>
</script>
结果
<div id="photo_list">
<span>
<span>
<div class="photo_box">
<div class="photo_container">
<img src="img/profiling/f_001.jpg" class="photo">
</div>
</div>
</span>
<span>
<div class="photo_box">
<div class="photo_container">
<img src="img/profiling/f_002.jpg" class="photo">
</div>
</div>
</span>
</span>
</div>