2013-09-24 7 views
13

Używając EmberJS/Handlebars, jak dodać klasę do elementu, tylko jeśli warunek jest prawdziwy?Atrybuty klasy warunkowej Handlebars

<div {{#if isSearching}}class="foo"{{/if}}></div> 

Tak samo, ale mniej pseudokodu i więcej rzeczywistości.

+0

Dobrze, że działa. Możesz wysłać listę klas jako zmienną danych szablonu i użyć jej zamiast tego, jeśli wolisz przetwarzać te rzeczy poza szablonem. Lub możesz użyć niestandardowej metody pomocnika ... Ale tak naprawdę to, co masz, jest prostsze. –

+0

@SimonBoudrias Ale to nie działa. Unika wszystkich właściwości po instrukcji if. – alt

Odpowiedz

5

To nie zadziała, ponieważ pomocnik {{#if}} utworzy znaczniki w kodzie HTML. Czy to w zamian:

<div {{bind-attr class="isSearching:foo"}}></div> 
+1

bindAttr jest "starą" składnią Ember btw (nie jest używane z nowszymi wersjami). –

+0

(nazywa się bind-attr w nowym) –

+0

Dzięki - zaktualizowałem swoją odpowiedź – chopper

9

Musisz użyć {{bind-attr}} pomocnika warunku logicznego można read the guide about this.

W przypadku, gdy nieruchomość isSearching jest w sterowniku, można po prostu wykonaj następujące czynności:

<div {{bind-attr class="isSearching:foo"}}></div> 

Można zobaczyć cały kod w tym skrzypce: http://jsfiddle.net/NQKvy/240/

+0

Twój link do przewodnika jest zepsuty. – bmavity

46

{{bind- attr}} to deprecated. Można użyć nowej znacznie ładniejszy bound attribute syntax w Ember 1.10 i wyżej, tak jak poniżej:

<div class="{{if isSearching 'foo'}}"></div>  
+0

Oto odpowiedź, której szukałem, dzięki Adamowi. –

Powiązane problemy