8

我想我可能对Marionette.Layout打算如何使用有一个根本的误解。

我正在尝试这样的事情:

在此处输入图像描述

布局包括两个Marinotette.ItemViews:“Explode”ItemView和“PopStar” ItemView。此布局旨在始终包含这些视图,因此我尝试这样做:

var TheLayout = Backbone.Marionette.Layout.extend({
    template: '#the=layout-template',
    regions: {
        explode: '#explode-region',
        popstar: '#popstar-region'
    }
    initialize:function(options){
        _.bindAll(this);

        var explodeView = new ExplodeView();
        this.explode.show(explodeView);        // <-- This throws and exception because the regions are not available yet

    }
})

但看起来这些区域在布局渲染之前不可用。我在添加视图之前尝试调用this.render(),但这不起作用。我很确定这里的根本问题是我在错误的情况下应用了布局。

在这种情况下我应该怎么做?什么时候使用正确Marionette.Layout

谢谢!

4

1 回答 1

17

onRender在布局的方法中显示区域视图。代码:

var TheLayout = Backbone.Marionette.Layout.extend({
    template: '#the=layout-template',
    regions: {
        explode: '#explode-region',
        popstar: '#popstar-region'
    }
    onRender: function() {
        var explodeView = new ExplodeView();
        this.explode.show(explodeView);
    }
})

请注意,在这种情况下,_.bindAll(this)不需要。

于 2012-08-15T22:35:27.683 回答