jsRender зацикливает список‹строка›

Вопрос по циклу {{for}} в jsRender.

Демонстрация показывает, что мы можем перебирать набор сложных объектов и отображать их свойства:

{{for languages}}
    <div>
        <em>{{>name}}</em>
    </div>
{{/for}}

Но что, если мой languages всего лишь List<string>? {{>name}} отображаться не будет. Как мы можем ссылаться на отдельные строковые значения?

Спасибо.


person Blaise    schedule 06.08.2012    source источник


Ответы (4)


Вы должны иметь возможность использовать #data для доступа к отдельным строковым значениям внутри цикла.

person MrOBrian    schedule 06.08.2012
comment
просто из любопытства, это задокументированный метод? - person matt lohkamp; 16.12.2015
comment
@mattlohkamp Об этом упоминается здесь (#data – сокращение от #view.data ) и здесь (представление имеет свойство данных, которое является текущими данными контекст, используемый для рендеринга этого представления) - person Frank Tan; 04.11.2016
comment
нужен пример в контексте - person Sergey; 09.03.2017
comment
Это очень старый ответ, и хотя в то время он был правильным, вполне возможно, что он не имеет отношения к последним версиям jsRender. Я не использовал jsRender несколько лет и не следил за их изменениями. - person MrOBrian; 14.03.2017

{{#data}}

Не работает для меня.

Кажется, что-то изменилось, вот что помогло мне:

{{>#data}}
person Jonas Geiregat    schedule 22.08.2012
comment
@ r2b2s - на самом деле все наоборот. Тег {{› ...}} следует использовать вместо {{: ...}} всякий раз, когда отображаемые данные не являются полностью доверенными — для защиты от атак с внедрением HTML. - jsviews.com/#htmltag - person Sergey; 09.03.2017

Вы должны использовать:

{{>#data}} или {{>}} - (кодирует HTML)

{{:#data}} или {{:}} - (не HTML)

Например:

Допустим, ваш объект languages выглядит так:

var languages = ['en', 'sp', 'zh'];

{{for languages}}
    <div>
        <em>{{>}}</em>
    </div>
{{/for}}

Приведет к:

<div>
   <em>en</em>
</div>
<div>
   <em>sp</em>
</div>
<div>
   <em>zh</em>
</div>

Документация

#data

Разница между : и >

person Sergey    schedule 08.03.2017

Кроме того, если вы хотите сделать некоторые сравнения, вы можете использовать такой код:

{{if #data == 'xxx' || #data == 'yyy'}}
...
{{/if}}

в сценарии.

person Cody    schedule 22.07.2016