【发布时间】:2014-04-08 23:11:24
【问题描述】:
我找不到与此错误相关的任何帖子。我正在尝试在 Marionette ItemView 中呈现主干集合。模板已渲染,但是与集合相关的数据并未在模板中渲染。我没有收到任何错误或其他指标。由于我不明白的原因,在App.mainRegion.show(overView) 上使用setTimeout()。但是,我知道这不是一个可接受的解决方案。有人能给我一些关于如何在这种情况下正确呈现 Collection 的 ItemView 的见解吗?这是我的简化代码:
要呈现的我的收藏:
About.Collection = Backbone.Collection.extend({
url: '/api/about',
idAttribute: '_id',
});
涉及的视图定义:
About.ListView = Marionette.CollectionView.extend({
tagName: 'ul',
itemView: App.About.ListItemView,
});
About.OverView = Marionette.ItemView.extend({
tagName: 'div',
className: 'inner',
template: _.template('<h2>About Overview</h2><p><%= items %></p>'),
});
我的相关执行代码:
var API = {
getAbouts: function() {
var abouts = new App.About.Collection();
abouts.fetch();
return abouts;
},
...
}
var abouts = API.getAbouts();
var aboutsListView = new App.About.ListView({collection: abouts }),
aboutsOverView = new App.About.OverView({collection: abouts});
// Correctly renders collection data
App.listRegion.show(aboutsListView);
// Does not render collection data
App.mainRegion.show(aboutsOverView);
// unless
setTimeout(function() {App.mainRegion.show(aboutsOverView)}, 50);
对于那些感兴趣的人,我正在使用 ItemView 最终意图显示 About.Collection 的聚合数据。如果需要,我很乐意提供更多信息。
【问题讨论】:
标签: backbone.js marionette backbone-views