Javascript 木偶网:如何将LayoutView作为行预先添加到CompositView表中?
我正在用Backbone.js和marionete.js构建一个表。我的模型集合创建表中的行,这些行被插入到Javascript 木偶网:如何将LayoutView作为行预先添加到CompositView表中?,javascript,backbone.js,view,marionette,composite,Javascript,Backbone.js,View,Marionette,Composite,我正在用Backbone.js和marionete.js构建一个表。我的模型集合创建表中的行,这些行被插入到中 我想在表的顶部附加一行,这不是我收藏的一部分。它是以前定义的布局视图 通常我只会添加另一个区域,但因为我正在处理一个表,所以我不能向tbody添加额外的div,因为该表将把它吐出表外,因为它不是中的 下面是我在CompositView的onShow函数中构建此功能的尝试: var SetAllTargets = Backbone.Marionette.LayoutView.extend
中
我想在表的顶部附加一行,这不是我收藏的一部分。它是以前定义的布局视图
通常我只会添加另一个区域,但因为我正在处理一个表,所以我不能向tbody
添加额外的div
,因为该表将把它吐出表外,因为它不是
中的
下面是我在CompositView的onShow
函数中构建此功能的尝试:
var SetAllTargets = Backbone.Marionette.LayoutView.extend({
template: JST["common/cubes/table/set-all-rows"],
tagName: "tr",
className: "set-all-targets"
});
App.Table = Marionette.CompositeView.extend({
template: JST["common/targets/layout"],
className: "targets",
childView: RowTarget,
childViewContainer: "tbody",
regions: {
targetsRegion: ".targets-region"
},
onShow: function() {
var setAllTargetsRow = new SetAllTargets();
var setAllTargetsRegion = "<tr class='target set-all-targets'></tr>";
this.$el.find("tbody").prepend(setAllTargetsRegion);
this.$el.find(".set-all-targets").show(setAllTargetsRow);
}
)};
但这只会导致html
被放在表的顶部,而不会出现任何子元素。在呈现集合之前,您可以使用组合中的方法插入某些内容:
onBeforeRenderCollection: function() {
this.addChild(null, <View>, 0);
}
onBeforeRenderCollection:function(){
this.addChild(null,0);
}
例如,它正在运行。我最后在标题中插入了一个额外的行,但这更干净了。我会尽快用这个更新我的项目。谢谢
onShow: function() {
var setAllTargetsRow = new SetAllTargets();
this.$el.find("tbody").prepend(setAllTargetsRow.el);
}
onBeforeRenderCollection: function() {
this.addChild(null, <View>, 0);
}