JSRender - как условно отображать подшаблон

Я пытаюсь изучить JSRender. Можно ли отображать подшаблон в зависимости от условия? Например, если #index = 1 или 2, отображать шаблон A, если 3 или 4, отображать шаблон B?


person user2427285    schedule 18.04.2014    source источник
comment
Спасибо, это здорово. Каков синтаксис для вызова подшаблонов в этом контексте?   -  person user2427285    schedule 18.04.2014
comment
что означает подшаблон.. опубликуйте свой код   -  person Deepak Ingole    schedule 18.04.2014
comment
Наценка для каждого варианта довольно сложная. Вместо того, чтобы размещать код между условиями, я хочу поместить его в подшаблоны и вызвать их в коде. Я видел что-то подобное...{{для статьи tmpl=#ArticleTemplate/}}. Это выглядит правильно?   -  person user2427285    schedule 18.04.2014
comment
Спасибо за помощь. Этот код работал: ‹script id=testone type=text/x-jsrender› Шаблон 1 ‹/script› ‹script id=testtwo type=text/x-jsrender› Template 2 ‹/script› ‹script id=tmplFeaturePanel type=text /x-jsrender› {{для списка}} {{if #index == 1}} {{include tmpl=#testone/}} {{›elseif #index ==2 }} {{include tmpl=#testtwo/ }} {{/if}} {{/for}} ‹/script›   -  person user2427285    schedule 19.04.2014
comment
Опубликуйте свой ответ и отметьте его как правильный   -  person Deepak Ingole    schedule 19.04.2014
comment
Обратите внимание, что {{›elseif ...}} является неправильным синтаксисом.   -  person BorisMoore    schedule 20.04.2014


Ответы (1)


Вот правильный синтаксис и некоторые ссылки на документацию ниже.

<script id="tmplFeaturePanel1" type="text/x-jsrender">
    {{for List}}
        {{if #index == 1 || #index == 2}}
            {{include tmpl="#test1or2"/}}
        {{else #index === 3 || #index === 4 }}
            {{include tmpl="#test3or4"/}}
        {{else}}
            {{include tmpl="#testOther"/}}
        {{/if}}
    {{/for}}
</script>

или еще более компактный синтаксис, который работает точно так же:

<script id="tmplFeaturePanel2" type="text/x-jsrender">
    {{for List}}
        {{if #index == 1 || #index == 2 tmpl="#test1or2"}}
        {{else #index === 3 || #index === 4 tmpl="#test3or4"/}}
        {{else tmpl="#testOther"/}}
        {{/if}}
    {{/for}}
</script>

где в обоих случаях ссылочные шаблоны могут быть:

<script id="test1or2" type="text/x-jsrender">
    1or2 {{:name}}
</script>

<script id="test3or4" type="text/x-jsrender">
    3or4 {{:name}}
</script>

<script id="testOther" type="text/x-jsrender">
    Other: {{:name}}
</script>

Видеть

Кстати, обратите внимание, что {{elseif ...}} или {{else if ...}} НЕ является правильным синтаксисом. На самом деле {{else someExpression}} работает как elseif. {{else}} работает как else.

person BorisMoore    schedule 20.04.2014
comment
Спасибо за четкий и полезный ответ. Это улучшение моего кода, которое я буду использовать. - person user2427285; 20.04.2014