2016-07-25 10 views
0

In meiner js Datei, gebe ich ein JSON-Objekt mit zwei Schlüsseln - { 'Tests': Tests, 'isComplete': isComplete}Lenker - mit #if Helfern mit zwei Bedingungen

In meinem Lenker Datei, ich will um das Testobjekt basierend auf jedem Teststatus anzuzeigen. Zur gleichen Zeit gibt es eine andere Bedingung, für die ich einen Helfer mit dem Namen 'isRequired' hinzugefügt habe, den ich nur gegen den Test überprüfen möchte, wenn isComplete nicht wahr ist.

{{#if isComplete}} 
{{#each tests}} 
    {{#isRequired this}} 
     // display data 
    {{/isRequired}} 
{{/each}} 
{{else}} 
{{#each tests}} 
    // display data 
{{/each}}{{/if}} 

Dieser Code enthält den doppelten Code zum Anzeigen von Daten. Ich lerne immer noch Lenker und bin mir nicht sicher, wie ich diesen redundanten Codeblock eliminiere. Kannst du mir helfen, wie ich das umgestalten kann? Vielen Dank!

Antwort

1

Ich würde wahrscheinlich dies lösen, indem Sie einen isComplete Parameter zu Ihrem isRequired Helfer hinzufügen. Sie haben nicht den Code für Ihre Helfer zur Verfügung gestellt, aber ich glaube, es wäre so etwas wie dies am Ende aussehen:

Handlebars.registerHelper('isRequired', function (context, isComplete, options) { 
    if (!isComplete) { return options.fn(context); } 
    /* rest of isRequired implementation here */ 
}); 

Ihre Vorlage würde dann wie folgt aktualisiert werden:

{{#each tests}} 
    {{#isRequired this ../isComplete}} 
     // display data 
    {{/isRequired}} 
{{/each}} 

Beachten Sie, dass diese Implementierung gilt Die isRequired Logik nur wennisComplete ist true. Dies sind die gleichen Regeln wie in Ihrem Vorlagencode-Beispiel. Diese Regeln scheinen jedoch dem Text Ihrer Frage zu widersprechen, der besagt, dass isRequired "nur angewendet werden soll, wenn isComplete nicht wahr ist". Wenn dies die Anforderungen sind, die wir erfüllen müssen, müssen wir nur den Nichtbediener aus unserer neuen Wächterklausel entfernen:

+0

Dies half. ../ für den verschachtelten Pfad war etwas, das mir nicht bewusst war. Vielen Dank!! – Lynn

Verwandte Themen