$ idx и $len в условном выражении dust.js

Документация на пыль просто ужасна, я уже просмотрел все, что могу найти, и не могу понять, как это должно работать.

У меня возникла эта проблема с предполагаемыми специальными значениями $idx и $len, которые, если я правильно догадался, возвращают текущий индекс, итерации по сектору, подобному массиву, и длине упомянутого массива. У меня есть условие @if (несколько на самом деле), которое я пытаюсь настроить для форматирования шаблона, и значения просто не работают так близко, как я могу сказать, что приводит меня к следующим вопросам:

  • Являются ли $idx и $len актуальными в dust.js?
  • Можете ли вы использовать их в @if, и если да, то как?
  • Предполагая, что 1 = истина, равна $idx на основе нуля?

Вот мой шаблон:

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

Что он должен делать:

  • Если есть один человек, отрисуйте строку "Джейк здесь".
  • Если есть два человека, отрисуйте строку "Джейк и Джон здесь".
  • Если есть три или более человека, отрисуйте строку "Джейк, Джон и Билл". (очевидно, при необходимости добавляя имена, разделенные запятыми)

Если специальные функции $idx и $len работают так, как можно было бы подумать, что они работают, этот шаблон будет делать то, что я хочу, насколько я могу судить, однако, я не думаю, что любой из $idx или $len (или оба). Если это не так, как мне создать шаблон, который делает то, что я хочу?

Ответ 1

  • Да, это специальные помощники в Dust.
  • Но в соответствии с dustjs-linkedin wiki (в разделе @if) они не могут использоваться внутри списков примитивов. В таких случаях вы должны использовать следующий синтаксис:

    {@idx}{.}{/idx}
    

То же самое относится и к длине. Итак, вы шаблон будет что-то вроде шаблона в jsFiddle.

3. Да, $idx и @idx основаны на нуле. (См. здесь для получения дополнительной информации).

Ответ 2

Но согласно wiki файлу dustjs-linkedin (в разделе @if), они не могут использоваться внутри списков примитивов. В таких случаях вы должны использовать следующий синтаксис:

{@IDX} {.} {/IDX}

теперь это изменилось, и даже в примитивах $idx и $len работают