2

Описание: jsfiddle следующих действий. Скажем, у меня есть этот JSON данные:Условные обозначения на стороне клиента. Цемент с Dust.js

{ 
    "people": [ 
     { 
      "name": "Bob", 
      "eye-color": "Green" 
     }, 
     { 
      "name": "Jill", 
      "eye-color": "Blue" 
     }, 
     { 
      "name": "James", 
      "eye-color": "Green" 
     } 
    ] 
} 

Если бы я хотел вывести все имена народов, использующих dust.js, я бы настроить шаблон так:

<ul> 
    {#people} 
    <li>{name}</li>{~n} 
    {/people} 
</ul> 

Однако, что если:

1) Я только хотел вывести имена людей с зелеными глазами? Есть ли способ сделать это, используя conditionals in dust?

2) Я только хотел вывести первые два имени, независимо от цвета глаз

3) Я только хотел вывести имя второго человека, независимо от цвета глаз

EDIT: Добавление четвертого и пятый сценарий:

4) Я только хочу, чтобы отобразить второе и третье имена (т.е. индекс X индексировать Y)

5) Я хочу только вывести первые два имени людей с зелеными глазами (скажем, список людей продолжался намного дольше, чем показанный выше 3, включая более зеленые глаза, которые не будут отображаться).

И еще один вопрос:

Скажите мой JSON имеет ключ/значение пары вроде следующего:

{ "tags": ["tag1", "tag2", "tag3"] } 

Есть ли способ использовать {@eq}, чтобы проверить, если он содержит Например, «tag2»?

ответ

1

Вы можете сделать все три работы, но вам нужно будет использовать Dust helpers.

1: Вам нужно @eq помощник (я также меняю ключ от eye-color к eyeColor, потому что черточки могут запутать пыль

<ul> 
    {#people} 
     {@eq key=eyeColor value="Green"} 
      <li>{name}</li>{~n} 
     {/eq} 
    {/people} 
</ul> 

2:. Вам нужно @lt помощника, вместе с $idx ($idx является индекс текущего элемента в массиве, где первый элемент является 0)

<ul> 
    {#people} 
     {@lt key=$idx value=2} 
      <li>{name}</li>{~n} 
     {/lt} 
    {/people} 
</ul> 

3:. Вам нужно @eq помощника, вместе с $idx

<ul> 
    {#people} 
     {@eq key=$idx value=1} 
      <li>{name}</li>{~n} 
     {/eq} 
    {/people} 
</ul> 
+0

awesome! большое спасибо. 2 быстрых дополнения: 1) как бы вы отображали имена 2-3, только если было более трех имен? и 2) что делает {~ n}? Код, кажется, отлично работает без него – dougmacklin

+0

1) Вы можете вложить '{@lt key = $ idx value = 3}' inside '{@gt key = $ idx value = 0}' 2) '{~ n}' добавляет новую строку, которая по умолчанию удаляет пыль. Вам, вероятно, это не нужно. – smfoote

+0

спасибо smfoote! Я добавил еще два сценария и другой связанный с этим вопрос, не могли бы вы взглянуть и сообщить мне, если это возможно?это все, я обещаю :) – dougmacklin

 Смежные вопросы

  • Нет связанных вопросов^_^