试图将非常复杂的 jQuery 模板代码转换为 jsRender。我在旧代码中有这个每个循环:
<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 循环移动到模板内部,它就会中断。
我将如何转换这种情况?