gpt4 book ai didi

javascript - CompositeView 不呈现 ItemView,甚至不触发 appendHtml

转载 作者:行者123 更新时间:2023-11-30 06:38:51 31 4
gpt4 key购买 nike

我对我的 View 渲染有点迷茫——第一次尝试这样做。我的模板设置与此应用程序类似。

到目前为止,我已经渲染了 CompositeView 的模板,但它没有渲染任何 ItemView。它甚至不会触发渲染方法来尝试调试,所以我不确定我可以在哪里记录片段以查看它卡在哪里......这是代码:

这是我的 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 代码中以显示 ServiceItemView 在 ServiceTableView 之前加载

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>

服务 TableView 模板:

<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 模板,但下方没有呈现任何服务。

感谢任何帮助。甚至还有关于将日志语句粘贴到何处以获取更多信息的指示。

谢谢!

最佳答案

原来我创建的Collections是这样写的:

Backbone.Model.extend 而不是 Backbone.Collection.extend。我一定是在创建集合时从模型中复制了代码以加快编写速度。

如果有人想将上面的代码用作他们自己项目的示例,现在已修复并可以使用。

关于javascript - CompositeView 不呈现 ItemView,甚至不触发 appendHtml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906184/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com