2012-08-10 20 views
10

Dokumentacja dotycząca kurzu to tylko okropna, Przeanalizowałem już wszystko, co mogę znaleźć i nie mogę się dowiedzieć, jak to działa.

Mam problem z rzekomymi specjalnymi wartościami $ idx i $ len, które, jeśli poprawnie zgadłem, zwracają bieżący indeks podczas iteracji nad sekcją podobną do tablicy i długości wspomnianej sekcji podobnej do tablicy . Mam warunek @if (kilka rzeczywiscie), które próbuję trenować, aby sformatować szablon, a wartości nie działają tak blisko, jak się da, co prowadzi do następujących pytań:

  1. Czy $ idx i $ len są prawdziwymi specjalnościami w dust.js?
  2. Czy możesz ich użyć w @if, a jeśli tak, to w jaki sposób?
  3. Zakładając, że 1 = prawda, czy bazuje na $ idx od zera?

Oto mój szablon:

{#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} 

Co to robić "Jake jest tutaj"

  • Jeśli jest jedna osoba, renderowanie ciąg
  • Jeśli są dwie osoby, wyślij ciąg "Jake i John są tutaj."
  • Jeśli są trzy lub więcej osób, wyrenderuj ciąg znaków "Jake, John i Bill są tutaj." (Oczywiście, dodawanie nazw oddzielonych przecinkami, jak jest to konieczne)

Jeśli $ idx i $ len promocji działają w ten sposób, można by pomyśleć, że działa, to szablon będzie robić to, co chcę go, tak blisko, jak tylko mogę Mówię jednak, że nie sądzę, że zaimplementowano $ idx lub $ len (lub oba). Jeśli nie, jak utworzyć szablon, który robi to, co chcę?

Odpowiedz

5
  1. Tak, są specjalnymi pomocnikami w kurzu.
  2. Ale zgodnie z dustjs-linkedin wiki (w sekcji @if), nie można ich użyć na listach prymitywów. W takich przypadkach należy użyć następującej składni:

    {@idx}{.}{/idx} 
    

samo dotyczy długości. Więc jesteś szablonem, coś podobnego do szablonu w tym jsFiddle.

3. Tak, $ idx i @idx mają wartość zero. (Aby uzyskać więcej informacji, patrz here).

+0

wielką komentarz {.} @smfoote – JAiro

+0

Jest mały błąd w skrzypcach ... czekiem jest/muszą sprawdzić, czy === 0, nie 1. W przeciwnym razie, doskonały, dzięki! –

+0

@ RobertC.Barth Dzięki. Zaktualizowałem łącze jsFiddle ze zaktualizowaną logiką. – smfoote

0

Ale zgodnie z wiki typu "dustjs-linkedin" (w sekcji @if), nie można ich używać na listach prymitywów. W takich przypadkach należy użyć następującej składni:

{@idx} {/ idx}

teraz to się zmieniło, a nawet w prymitywów $ idx i $ len działa

Powiązane problemy