Как да премахнете регион от Marionette LayoutView?

В моя шаблон имам 2 елемента вътре в #header and #content като този:

Social.AppLayout = Backbone.Marionette.LayoutView.extend({
        el:'div#wrapper',
        template:'#appTemp',
        regions:{
            header:'div#header',
            content:'div#content'
        }
    });

Но докато показвам страницата за вход, не искам да изобразявам елемента content в страницата. така че се опитвам да премахна този регион, докато изобразявам оформлението по следния начин:

Social.App.addInitializer(function(){
        this.route = new Social.Routes;
        this.layout = new Social.AppLayout;
        this.layout.removeRegion("content", "#content"); // removing the content region !?
        this.layout.render();
        Backbone.history.start();
    });

Но не е премахнат. Въпросът ми е:

а) Как мога да покажа подходящите региони за съответната страница? б) каква е целта на добавянето и премахването на региони тогава?

Може ли някой да ми обясни, моля? покажете ми правилния начин за прилагане на това, моля? Благодаря предварително!


person 3gwebtrain    schedule 07.09.2014    source източник
comment
Тъй като посочвате селектор за вашия el, предполагам, че прикачвате своя изглед към вече изобразена страница?   -  person kinakuta    schedule 07.09.2014


Отговори (1)


За да се отговори на описания случай на употреба, изгледите за Header и Content трябва да бъдат включени в концепцията Region. Работен пример е тук

HTML код:

<div id="container"></div>

<script id="appTemp" type="text/html">
  <div id="header"></div>
  <div id="content"></div>
</script>


<script id="headerTmpl" type="text/html">
  <div>Header</div>
</script>

<script id="contentTmpl" type="text/html">
  <div>Content</div>
</script>

JavaScript код:

var HeaderView = Backbone.Marionette.ItemView.extend({
        template:'#headerTmpl'
});

var ContentView = Backbone.Marionette.ItemView.extend({
        template:'#contentTmpl'
});

AppLayout = Backbone.Marionette.LayoutView.extend({
        el:'div#container',
        template:'#appTemp',
        regions:{
            header:'div#header',
            content:'div#content'
        },
        onRender: function() {
            //console.log ('show menu');
            if (this.header)
                this.header.show (new HeaderView());
            if (this.content)
                this.content.show (new ContentView());
        }
});


layout = new AppLayout();
//layout.removeRegion("content");//uncomment this to remove the content region
layout.render();
person Ming Chan    schedule 07.09.2014
comment
Съгласих се с вашия отговор. Имам още един въпрос към вас. В случай, че имам елемент вътре в contaiener, кажете „headerContaienr“ – има ли начин да добавя моя хедър към „headerContainer“ в елемента „containener“? - тук е цигулката jsfiddle.net/q0Lbv61s/8 - person 3gwebtrain; 08.09.2014