2012-07-04 4 views
4

Я хочу использовать вложенный шаблон в разных частях моей веб-страницы. Для разных частей мне нужно получить значение из массива внутри вложенного шаблона. Я не могу использовать цикл for, потому что каждая часть имеет другой класс и позицию на веб-сайте. Можно ли передать переменную во вложенный шаблон? Следующий код упрощает то, что я пытаюсь достичь:JsRender: как передать переменные во вложенный шаблон

<script id="myBtnTmpl" type="text/x-jsrender"> 
    <button class="btn">   
     {{:myData.myArray[INDEX_VARIABLE].btnName}} 
    </button> 
</script> 

// Here I want to use INDEX_VARIABLE = 0 
<div class="BigButton"> 
    {{if myData tmpl="myBtnTmpl"/}} 
</div> 

// Here I want to use INDEX_VARIABLE = 1 
<div class="MediumButton"> 
    {{if myData tmpl="myBtnTmpl"/}} 
</div> 

// Here I want to use INDEX_VARIABLE = 2 
<div class="SmallButton"> 
    {{if myData tmpl="myBtnTmpl"/}} 
</div> 

Другой вопрос: При использовании вложенных шаблонов можно включить вложенные шаблоны, как это {{TMPL = «myBtnTmpl» /}} без если синтаксис?

Спасибо!

+0

Для второго вопроса {{для myData tmpl = "# myBtnTmpl" /}} Но полностью не понимаю ваш оригинальный вопрос .. – Willy

+0

В любом случае, согласно заголовку, я думаю, вы можете получить ссылку на https://github.com/BorisMoore/jsrender/blob/master/demos/step-by-step/06_template-composition.html – Willy

ответ

6

Да, вы можете установить именованные параметры шаблона на бирке, где вы используете tmpl="myBtnTmpl" (будь то в {{if}} тег или {{for}} тег):

<div class="BigButton"> 
    {{for myData ~arrIndex=0 tmpl="myBtnTmpl"/}} 
</div> 

Затем вы можете получить доступ к параметру шаблона в том же вы можете получить доступ к зарегистрированному помощнику - добавив «~» к имени.

<button class="btn">   
    {{:myData.myArray[~arrIndex].btnName}} 
</button> 

Кстати, вы также можете передавать переменные и вспомогательные функции (в дополнение к данным) с помощью метода рендеринга. Я просто добавил новый sample demo, показывая это.

Так что это означает, что шаблоны могут быть «параметризованы» аналогично, независимо от того, рендерите ли вы их из кода или декларативно, как в ваших вложенных шаблонах выше.

+0

Привет, Борис, спасибо за ваш быстрый ответ. Я последовал за вашим примером, и я положил ~ arrIndex = 0 на тег. Однако шаблон, похоже, не находит переменную, когда я пытаюсь получить к ней доступ в шаблоне. Я использую последний счетчик обязательств 19. Он работал для вас? – doorman

+0

Спасибо за поддержку jsRender, u должен поставить showCase на официальную страницу –

+0

@ boban984: Вы имеете в виду показ ссылок на сайты с использованием JsRender или JsViews? – BorisMoore