2013-03-06 12 views
8

Ok, ich weiß, das Super-basisch ist, aber ich habe für 2 Tage auf sie gestarrt und kann nicht sehen, warum es nicht funktioniert. Ich benutze Lenker IF Helfer, um eine Vorlage bedingt zu rendern. Hier# if-Anweisungen in Lenker

ist die HTML:

<head> 
    <title>flash</title> 
</head> 

<body> 
    {{#if isTrue}} 
     {{> hello}} 
    {{else}} 
     {{> goodbye}} 
    {{/if}} 
</body> 

<template name="hello"> 
    <h1>Hello!</h1> 
</template> 

<template name="goodbye"> 
    <h1>Goodbye!</h1> 
</template> 

Hier ist die einfache Kaffee-Datei:

isTrue = true 

Ich erwarte, dass die {{> hallo}} Vorlage zu machen, aber kein Glück. Ich bekomme nur die Vorlage {{> auf Wiedersehen}}. Es ist seltsam, da ich andere Projekte habe, wo ich das erfolgreich gemacht habe. Ich muss etwas Offensichtliches hier vermissen.

Antwort

20

Die isTrue variablen Bedürfnisse in einer Vorlage sein, damit es funktioniert. Also, legen die Körper Inhalte in einer Vorlage:

<body> 
    {{> body}} 
</body> 

<template name="body"> 
    {{#if isTrue}} 
     {{> hello}} 
    {{else}} 
     {{> goodbye}} 
    {{/if}} 
</template> 

Und dann können Sie isTrue wie folgt definieren:

Template.body.helpers 
    isTrue: -> true 
+0

Hallo Sjoerd, ich neu implementiert und es funktionierte. Vielen Dank. Was komisch ist, ist, dass ich ein anderes Projekt verwende, das Helfer im normalen HTML-Body verwendet, und es funktioniert ganz gut. Sehr merkwürdig, aber diese Lösung hat mich wieder auf den richtigen Weg gebracht. Danke noch einmal. – ppedrazzi

5

Hinweis:

Template.body.isTrue = -> true 

ist veraltet.

Die neue Syntax sieht wie folgt aus:

Template.test.helpers({ 
 
    'isTrue': function(){ 
 
    return true; 
 
    } 
 
});

Es sollte immer noch funktionieren, aber wenn Sie Ihre Konsole öffnen wird es eine Warnung über die Syntax geben.

1

mit Meteor 1.2.0.2 Sie es wie diese

tun können
Template.hello.helpers({ 
    isTrue() { return true } 
});