2013-08-20 4 views
5

ich so etwas wie dies tun will:Lenker - dynamisches Element Attribut

{{#each user}} 
    <span class="{{user.female ? 'female-span' : 'male-span'}}">{{name}}</span> 
{{/each}} 

Dies ist in so etwas wie AngularJS leicht machbar, aber ich kann diesen Lenker nicht. Was ist das Idiom/Muster, das ich in der Lenkstange verfolgen soll, wenn ich Elementattribute dynamisch ändern möchte? Gibt es irgendwelche Lenker Plugins, die das tun?

Antwort

8

Lenker gab Ihnen nur {{#if}} Helfer (die hier verwendet werden kann, ist es nur wortreich). Da es weniger Logik ist, wertet es Code nicht aus, der innerhalb der Klammern übergeben wird (Underscore-Vorlagen tut dies).

Dies ist eine gute Sache, da es sicherstellen, dass Ihre Vorlage keine Nebenwirkungen haben wird.

Hier werden Sie wahrscheinlich diese Logik aus der Vorlage entfernen mögen, und die Klassennamen als Template-Argument übergeben:

template({ genderClass: user.female ? 'female-span' : 'male-span' }); 

Dann in der Vorlage:

<span class="{{genderClass}}">{{name}}</span> 

In Ihrem Fall Sie befinden sich in einem Array, sodass Sie einfach genderClass als Modelleigenschaft hinzufügen können. Andernfalls könnten Sie eine benutzerdefinierte Hilfsmethode verwenden, aber das ist eine Menge Aufwand für etwas ganz einfaches.