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を変更したいと思います。この機能をサポートするために現在のライブラリを変更できるアイデアは誰にでもあります-githubsource。このコードは私の頭を少し超えており、時間が足りず、このライブラリを理解することは私の現在のプロジェクトの範囲内ではありません;)

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 に答える