Marionettejs - 如何使layoutView在渲染时自动显示区域

时间:2014-09-02 16:34:10

标签: backbone.js marionette

这是我的layoutView定义:

var OuterLayout = Backbone.Marionette.LayoutView.extend({
    template: compiledTplFunc, 
    el: '#main',
    regions: {
        header: '#header', 
        content: '#content', 
        footer: '#footer'
    },
    initialize: function () {
        // alert('initializing');
        this.header.show(new Header());
        // this.footer.show(new Footer());
    }
});

//下面是路由定义中的呈现代码:

var AppRouter = Backbone.Marionette.AppRouter.extend({
    routes : {
        '': 'index',
        'about': 'about', 
        'app' : 'startApp',
        'signup' : 'signup', 
        'login' : 'login'
    }, 
    index : function () {
        outerlayout.render();

        var Header =  require('../header/header');
        var Content =  require('../contentIndex/contentIndex');
        var Footer = require('../footer/footer');
        ol.header.show(new Header());
        ol.content.show(new Content());
        outerLayout.footer.show(new Footer());    
    }, .....

有几条路线,我不想在渲染时在路线中附加菜单和页脚的所有内容 我想让它自动附加一些区域,例如:#header和#footer。我该怎么做才能做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:3)

只需使用布局的onRender功能中的布局渲染您想要始终渲染的内容。根据您的代码,它看起来像这样:

OuterLayout.prototype.onRender = function () {
  var Header =  require('../header/header');
  var Footer = require('../footer/footer');
  this.header.show(new Header());
  this.footer.show(new Footer());
}