不,这不是this question的重复......虽然有点相关,所以我将使用该Q中的代码进行比较。
我试图使用{{tmpl}} tag从嵌套模板中获取索引。使用tmlp标记很像{{each}}标记,就像上面链接的问题一样,但$ index属性不存在。
<script id="answerTable" type="text/x-jquery-tmpl">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
{{tmpl(answersObj) '#answers' }}
</table>
</script>
<script id="answers" type="text/x-jquery-tmpl">
<tr>
<th><input type="radio" name="group1" value="---!INDEX HERE!---" /></th>
<td>${AnswerText}</td>
</tr>
</script>
我不想用凌乱的方式来做这件事 - 如果可能的话我宁愿修改lib。任何人都有任何想法可以修改当前的lib以支持此功能 - git hub source。这个代码有点过头了,我的时间很短,理解这个lib不在我当前的项目范围内;)
答案 0 :(得分:3)
确定必须修改模板库。 有关github补丁,请参阅this link。
jquery.tmpl.js原始(当前版本)的第150-155行
ret = jQuery.isArray( data ) ?
jQuery.map( data, function( dataItem ) {
return dataItem ? newTmplItem( options, parentItem, tmpl, dataItem ) : null;
}) :
[ newTmplItem( options, parentItem, tmpl, data ) ];
return topLevel ? jQuery( build( parentItem, null, ret ) ) : ret;
修改为支持$ index
ret = jQuery.isArray( data ) ?
jQuery.map( data, function( dataItem, index ) {
if(dataItem){dataItem.$index = index;}
return dataItem ? newTmplItem( options, parentItem, tmpl, dataItem ) : null;
}) :
[ newTmplItem( options, parentItem, tmpl, data ) ];
return topLevel ? jQuery( build( parentItem, null, ret ) ) : ret;
答案 1 :(得分:0)
我还学到了另一种可能适用于您的场景的技术......
您可以使用 jQuery.inArray 从父数据对象获取索引 - 假设您保持父数据对象同步。