我是MarionetteJS的新手而且喜欢它。我创建了一个ItemView和CompositeView来显示集合中的值。这很棒,但我想渲染自定义字段/列标题。我使用Backbone.Collection并使用_.each(item.keys(),function(key){...我不能用MarionetteJS做这个,因为我每行使用一个ItemView。
我尝试过使用appendHTML,但是访问该集合时遇到了困难。这是我到目前为止所得到的:
...
render: function () {
var template = "<% _.each(item.keys(), function(key){%><th><%= key %></th><%})%>";
this.$("thead").html(_.template(template, {
item: this.collection.models[0]
}));
},
appendHtml: function (collectionView, itemView) {
collectionView.$("tbody").append(itemView.el);
},
...
这不起作用。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以在此compositeView中存储额外数据,然后在模板中使用它。请允许我使用下面的CoffeeScript。
第1步:获取数据并将其存储在上下文变量中,如this.headers
initialize: ->
@headers = @collection.last().attributes.keys
第2步:使用内置templateHelpers
templateHelpers ->
view = @ # Use this line because context will change below
headers: ->
view.headers
第3步:使用简单的迭代在模板中显示它。我将使用Handlerbars例如
<table>
<thead>
<tr>
<th>Records</th>
{{#each headers}}
<th>{{this}}</th>
{{/each}}
</tr>
</thead>
<tbody>
<!-- Display itemViews here-->
</tbody>
</table>