2012-07-04 81 views
4

我想在我的網頁的不同部分使用嵌套模板。對於不同的部分,我需要從嵌套模板中的數組獲取值。我無法使用for循環,因爲每個部分在網站上都有不同的類別和位置。是否有可能將一個變量傳遞給嵌套模板?下面的代碼簡化了什麼,我想實現:{{TMPL =「myBtnTmpl」 /}}沒有如果語法使用嵌套模板是有可能包括這樣的嵌套模板: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> 

另一個問題?

謝謝!

+0

對於第二個問題,{{for 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> 

順便提一下,您還可以使用render方法傳遞變量和輔助函數(除數據外)。我剛剛添加了一個新的sample demo顯示。

所以這意味着無論您是從代碼呈現模板還是聲明性地在上面的嵌套模板中,模板都可以「參數化」。

+0

嗨鮑里斯,感謝您的快速回復。我遵循你的例子,我把〜arrIndex = 0放在標籤上。但是,當我嘗試在模板中訪問它時,該模板似乎沒有找到該變量。我正在使用最新的提交計數19.它是否適合你? – doorman

+0

感謝您仍然支持jsRender,您應該在官方頁面上放置一個showCase –

+0

@ boban984:您的意思是顯示使用JsRender或JsViews的網站鏈接? – BorisMoore