2016-04-14 14 views
0

Dieser Meteor-Code muss die richtige Vorlage basierend auf dem Wert eines Helfers display rendern, die beim Start funktioniert, aber wenn Wert später über einige Klickereignisse ändert, und der Wert in display ändert sich von "mainMenu "to" content "wird der Code nicht mit der richtigen Vorlage neu gerendert.Reaktive bedingte Vorlage Rendering

Template.registerHelper('display',() => { 
 
    return Session.get('display'); 
 
});
<template name="index"> 
 
    {{#if (display 'mainMenu')}} 
 
    {{> mainMenu}} 
 
    {{else}} {{#if (display 'content')}} 
 
    {{> Template.dynamic template="content" data=taskInputs}} 
 
    {{/if}}{{/if}} 
 
</template>

Warum ist es nicht funktioniert und wie man es beheben? Dank

+1

Warum akzeptiert Ihr Helfer keinen Parameter? – Areca

+0

Ich musste nicht, aber warum hast du gefragt? Muss es sein? –

+1

Sie haben eine Hilfsmethode ohne params, die einen Wert aus Session zurückgibt, aber Sie geben Parameter wie 'mainMenu', 'content' an, während Sie diesen Helfer aufrufen? – Areca

Antwort

0

Ich denke, das ist das, was Sie suchen:

Template.registerHelper('display', (input) => { 
    return Session.get('display')==input; 
}); 

Template.index.onCreated(function() { 
    Session.set('display',null); 
}); 

und

<template name="index"> 
    {{#if display 'mainMenu'}} 
    {{> mainMenu}} 
    {{else}} 
    {{#if display 'content'}} 
     {{> Template.dynamic template="content" data=taskInputs}} 
    {{/if}} 
    {{/if}} 
</template> 

Es funktioniert für mich.