【发布时间】:2013-10-29 18:34:19
【问题描述】:
试图将非常复杂的 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 循环移动到模板内部,它就会中断。
我将如何转换这种情况?
【问题讨论】:
-
你如何声明你的辅助函数:filterOutMainImages?是的,展示一个小提琴会很好......应该是{{:imgUrl}}。上面的第二个版本缺少模板周围的
-
我在使用小提琴界面进行设置时遇到了问题,所以我在这里发布了一个测试页面:mcgrathdesigns.com/test
标签: javascript templates jquery-templates jsrender