2012-08-10 12 views
10

La documentazione sulla polvere è solo orribile, ho già esaminato tutto ciò che posso trovare e non riesco a capire come dovrebbe funzionare.

Sto riscontrando questo problema con i valori speciali supposti $ idx e $ len, che, se ho indovinato, restituiscono l'indice corrente mentre itera su una sezione di tipo array e la lunghezza di detta sezione di tipo array . Ho una condizione @If (più in realtà) che sto cercando di allenamento per formattare un modello, ed i valori non sono solo lavorando il più vicino posso dire, che mi porta alle seguenti domande:

  1. Le offerte speciali $ idx e $ len in dust.js?
  2. Potete usarli in un @if, e se sì, come?
  3. Supponendo che 1 = true, $ idx sia basato su zero?

Ecco il mio modello:

{#myArray} 
    {name}{@sep}, {/sep}{@if cond="('{$idx}' == '{$len} - 2')"}and {/if}{@if cond="('{$idx}' == '{$len} - 1')"}{@if cond="('{$len}' == '1')"} is {:else} are {/if}here.{/if} 
{/myArray} 

quello che si suppone di fare:

  • Se c'è una persona, rendere la stringa "Jake è qui."
  • Se ci sono due persone, visualizza la stringa "Jake e John sono qui".
  • Se ci sono tre o più persone, rendere la stringa "Jake, John e Bill sono qui." (ovviamente, aggiungendo i nomi separati da virgola come necessario)

Se gli speciali $ idx e $ len funzionano nel modo in cui si penserebbe che funzionino, questo modello farebbe quello che voglio, il più vicino possibile dite, comunque, non penso che siano stati implementati né $ idx o $ len (o entrambi). Se non lo sono, come faccio a creare un modello che fa ciò che voglio?

risposta

5
  1. Sì, sono aiutanti speciali in Polvere.
  2. Tuttavia, secondo lo dustjs-linkedin wiki (nella sezione @if), non possono essere utilizzati all'interno di elenchi di primitive. In questi casi è necessario utilizzare la seguente sintassi:

    {@idx}{.}{/idx} 
    

Lo stesso vale con la lunghezza. Quindi, il modello è simile al modello in questo jsFiddle.

3. Sì, $ idx e @idx sono a base zero. (Vedi here per maggiori informazioni).

+0

grande commento {.} @smfoote – JAiro

+0

C'è un piccolo errore nel violino ... il controllo per è/sono necessario verificare se === 0, non 1. Altrimenti, perfetto, grazie! –

+0

@ RobertC.Barth Grazie. Ho aggiornato il collegamento jsFiddle con la logica aggiornata. – smfoote

0

Tuttavia, secondo il wiki di dustjs-linkedin (nella sezione @if), non possono essere utilizzati all'interno di elenchi di primitivi. In questi casi è necessario utilizzare la seguente sintassi:

{@idx} {/ idx}

questo ora è cambiato, e anche in primitive del $ IDX e $ len lavora

Problemi correlati