2013-03-06 17 views
8

Ok, wiem, że to jest super podstawowe, ale patrzyłem na to przez 2 dni i nie widzę, dlaczego to nie działa. Używam helperów Handlebars IF do warunkowego renderowania szablonu.#if Wypowiedzi w kierownicy

Oto 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> 

Oto prosty plik kawy:

isTrue = true 

spodziewam {{>}} cześć szablon do renderowania, ale bez powodzenia. Właśnie dostaję szablon {{> do widzenia}}. To dziwne, ponieważ mam inne projekty, w których udało mi się to pomyślnie. Muszę tu pomijać coś oczywistego.

Odpowiedz

20

Zmienna isTrue musi być w szablonie, aby działał. Tak, umieścić zawartość ciała w szablonie:

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

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

a następnie można określić isTrue takiego:

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

Hi Sjoerd, ja ponownie wdrażane i to działało. Dziękuję Ci. To, co dziwne, to to, że mam inny projekt wykorzystujący pomocników w zwykłym kodzie HTML i działa dobrze. Bardzo dziwne, ale ta poprawka pozwoliła mi wrócić na właściwe tory. Dzięki jeszcze raz. – ppedrazzi

5

Uwaga:

Template.body.isTrue = -> true 

jest teraz przestarzała.

Nowa składnia wygląda następująco:

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

Należy nadal działać, ale po otwarciu konsoli to daje ostrzeżenie o składni.

1

z Meteor 1.2.0.2 można to zrobić jak ten

Template.hello.helpers({ 
    isTrue() { return true } 
}); 
Powiązane problemy