2

不,这不是这个问题的重复……虽然有点相关,所以我将使用 Q 中的代码进行比较。

我正在尝试使用{{tmpl}} 标记从嵌套模板中获取索引。使用 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。任何人都有任何想法可以修改当前库以支持此功能 - git hub 源。这段代码有点过头了,我的时间很短,理解这个库不在我目前的项目范围内;)

4

2 回答 2

3

OK不得不修改模板库。请参阅此链接以获取 github 补丁。

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;
于 2010-12-14T01:31:45.303 回答
0

我还了解了另一种可能适用于您的场景的技术......

您可以使用jQuery.inArray从父数据对象获取索引 - 假设您保持父数据对象同步。

于 2010-12-16T19:17:30.987 回答