2016-04-10 16 views
0

Ich habe eine HomeLayout.html wie folgt aus:Meteor Iron.Router dynamische Vorlage

<template name="HomeLayout"> 
    <main> 
    {{>Template.dynamic template=main}} 
    </main> 
</template> 

Und ein LoginLayout.html wie folgt aus:

<template name="LoginLayout"> 
    <main> 
    <p> Login Layout Test </p> 
    </main> 
</template> 

Ich versuche, an den Eingang dieses LoginLayout innerhalb HomeLayout . Um die HomeLayout beginne ich diesen Code verwenden:

Router.route('/', function() { 
    this.render('HomeLayout'); 
}); 

Aber ich weiß nicht, wie ich diese LoginLayout innen HomeLayout laden ...

Antwort

1

einfach einen Helfer definieren, die die Vorlage, die Sie dynamisch wollen wieder einzufügen:

Template.HomeLayout.helpers({ 
    main: function(){ 
    return "LoginLayout"; 
    } 
}); 

Wo Sie {{>Template.dynamic template=main}} die oben Helfer haben main als Helfer bewerten und das wird zurückkehren das Layout Sie suchen.

Ich weiß nicht, was Ihre <main></main> Tags aber tun.

+0

Funktioniert der Iron-Router nicht mit {{> yield}} und verwendet den aktuellen Routennamen, um eine passende Vorlage zu finden? –

+0

@JanJoukeTjalsma ja, aber dynamische Vorlagen werden normalerweise nicht von i-r gesteuert, sie werden von dem gesteuert, was die an die dynamische Vorlage übergebene Variable liefert. Dynamische Vorlagen bieten eine zusätzliche Kontrolle über '{{> yields}}' und sind nützlich, wenn Sie beispielsweise Ereigniskarten für mehrere Vorlagen freigeben möchten. –