Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 木偶网:如何将LayoutView作为行预先添加到CompositView表中?_Javascript_Backbone.js_View_Marionette_Composite - Fatal编程技术网

Javascript 木偶网:如何将LayoutView作为行预先添加到CompositView表中?

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

我正在用Backbone.js和marionete.js构建一个表。我的模型集合创建表中的行,这些行被插入到

我想在表的顶部附加一行,这不是我收藏的一部分。它是以前定义的
布局视图

通常我只会添加另一个区域,但因为我正在处理一个表,所以我不能向
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);
}