2013-10-29 56 views
0

試圖將非常複雜的jQuery模板代碼轉換爲jsRender。我在舊代碼的每個循環:嘗試使用jsrender在for,for循環中的數組上運行函數

<script id = "imagesTemplate" type="text/x-jquery-tmpl"> 
    {{each(i,imgUrl) twoAcross_filterOutMainImages(OfferGroup.Images)}} 
     <img src="{{= imgUrl}}" /> 
    {{/each}} 
</script> 

<script id = "largeTemplate" type="text/x-jquery-tmpl"> 
    {{tmpl "#imagesTemplate"}} 
</script> 

<div id="LARGE" class="mainContent"></div> 
<script> 
    currentOffer = offerGroups[0].Groups[0]; 
    $("#LARGE").html($("#largeTemplate").render(currentOffer)); 
</script> 

我已經編輯它看起來像這樣:

{{for ~filterOutMainImages(Images) tmpl="#imagesTemplate"/}} 

<div id="LARGE" class="mainContent"></div> 
<script> 
    currentOffer = offerGroups[0].Groups[0]; 
    $("#LARGE").html($("#largeTemplate").render(currentOffer)); 
</script> 

但它不工作。如果我改變它是:

<script id = "imagesTemplate" type="text/x-jquery-tmpl">  
     <img src="{{= imgUrl}}" /> 
</script> 

<script id = "largeTemplate" type="text/x-jquery-tmpl"> 
    {{for Images tmpl="#imagesTemplate"/}} 
</script> 

<div id="LARGE" class="mainContent"></div> 
<script> 
    currentOffer = offerGroups[0].Groups[0]; 
     $("#LARGE").html($("#largeTemplate").render(currentOffer)); 
</script> 

它把圖像顯示,但功能並不像陣列上運行。但是,如果我離開Images數組而沒有被包裝在一個函數中,並將for循環移動到模板內部,它就會中斷。

我該如何轉換此場景?

+0

你如何聲明你的幫助函數:filterOutMainImages?是的,顯示小提琴會很好...應該是{{:imgUrl}}。 上面的第二個版本缺少一個