2015-06-07 14 views
7

Hier ist die Template-StrukturMeteor-Vorlagen, ob Wert gleich String

{{#each loadedEvents}} 
    {{#if future}} 
    {{#if timezone="Europe/Warsaw"}} 
    {{> event}} 
    {{/if}} 
{{/each}} 

Ist das möglich nur Elemente mit bestimmten Wert anzuzeigen? Und die zweite Frage, wie sich diese beiden Aussagen zu kombinieren:

{{#if future}} {{#if timezone="Europe/Warsaw"}} 

Antwort

8

Sie können einen eigenen Helfer erstellen zu überprüfen, ob eine Zeitzone auf einen bestimmten Wert gleich ist:

Template.loadedEvents.helpers({ 
    timezoneIs: function(timezone){ 
    return this.timezone == timezone; 
    } 
}); 

Wenn Sie zwei Spacebars {{#if}} Block Helfer kombinieren möchten, erstellen Sie noch einmal einen eigenen Helfer, die den Test in JS ausführt:

JS

Template.loadedEvents.helpers({ 
    isFutureAndTimezoneIs: function(timezone){ 
    return this.future && this.timezone == timezone; 
    } 
}); 

HTML

{{#each loadedEvents}} 
    {{#if isFutureAndTimezoneIs "Europe/Warsaw"}} 
    {{> event}} 
    {{/if}} 
{{/each}} 
+0

Danke, ich habe Bedingungen in Helfer Code bewegt, und unterschied sich Ergebnisse mit #if und #unless :) –

8

Verwenden Template.registerHelper einen globalen Helfer zu schaffen. Zum Beispiel einen Helfer zu schaffen, die zwei beliebige Variablen vergleicht:

Template.registerHelper('compare', function(v1, v2) { 
    if (typeof v1 === 'object' && typeof v2 === 'object') { 
    return _.isEqual(v1, v2); // do a object comparison 
    } else { 
    return v1 === v2; 
    } 
}); 

Dann nutzen Sie es mit:

{{#if compare timezone "Europe/Warsaw"}} 
    // Do something 
{{/if}} 
Verwandte Themen