2015-06-07 12 views
7

è la struttura del modellomodelli Meteor, controllare se il valore è uguale a stringa

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

È quello possibile visualizzare solo gli elementi con valore dato qui? E la seconda domanda, come combinare questo due affermazioni:

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

risposta

8

È possibile creare un aiutante dedicato per verificare se un fuso orario è uguale ad un certo valore:

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

Se si desidera combinare due Spacebars {{#if}} aiutanti di blocco, ancora una volta creare un aiutante dedicato che esegue il test in JS:

JS

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

HTML

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

Grazie, ho spostato le condizioni in codice di supporto, e differivano risultati con #if e #unless :) –

8

Usa Template.registerHelper per creare un supporto globale. Per esempio, per creare un aiutante che confronta due variabili arbitrarie:

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; 
    } 
}); 

Quindi utilizzare utilizzando:

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