我的视图渲染有点迷失 - 第一次尝试这样做。我的模板设置与此应用程序类似。
到目前为止,我让它为CompositeView渲染模板,但它不渲染任何ItemViews。它甚至没有触发渲染方法来尝试调试,所以我不知道我可以在哪里记录碎片以查看它卡在哪里...这是代码:
这是我的ItemView:
define([
'jquery',
'underscore',
'backbone',
'text!templates/service/item.ejs'
], function($, _, Backbone, template) {
ServiceItemView = Backbone.Marionette.ItemView.extend({
tagName: 'tr',
template: '#service-item-template'
});
}
);
这是我的CompositeView:更新:在我的requirejs代码中添加,以显示在ServiceTableView之前加载了ServiceItemView
define([
'jquery',
'underscore',
'backbone',
'views/service/item',
'text!templates/service/table.ejs'
], function($, _, Backbone, ServiceItemView, template) {
var ServiceTableView;
ServiceTableView = Backbone.Marionette.CompositeView.extend({
tagName: 'table',
id: 'service-table',
itemView: ServiceItemView,
itemViewContainer: 'tbody',
template: '#service-table-template',
appendHtml: function(collectionView, itemView){
console.log("here");
//collectionView.$("tbody").append(itemView.el);
}
});
}
);
这是我尝试渲染的地方:
service_collection = new ServiceCollection([
new Service({
name: "Men's Cut",
length: 108000,
price: 2500
}),
new Service({
name: "Women's Cut",
length: 324000,
price: 5000
})
]);
service_table = new ServiceTableView({
collection: service_collection
});
App.main_region.show(service_table);
更新:以下是两个模板:
ServiceItemView模板:
<script type="text/html" id="service-item-template">
<td><%= name %></td>
<td><%= length %></td>
<td><%= price %></td>
<td class="actions">
<input type="button" class="icon" value="Delete" />
</td>
</script>
ServiceTableView模板:
<script type="text/html" id="service-table-template">
<thead>
<tr>
<th>Name</td>
<th>Time allotment</th>
<th>Pricing</th>
<th class="actions">Actions</th>
</tr>
</thead>
<tbody>
</tbody>
</script>
同样,将呈现ServiceTableView模板,但不会在下面呈现任何服务。
感谢任何帮助。甚至还有关于在哪里粘贴日志语句以获取更多信息的指针。
谢谢!
答案 0 :(得分:0)
原来我写的Collections
写了:
Backbone.Model.extend
代替Backbone.Collection.extend
。我必须在创建集合时从模型中复制代码以加快编写它。
现在修复并且如果有人想将上述代码用于他们自己项目的示例,则可以正常工作。