JsRender在嵌套模板中访问父索引

时间:2013-04-11 07:37:55

标签: jsrender

我在嵌套模板中访问父索引时遇到问题。尝试在模板中发送#index作为参数,但它不起作用(http://jsfiddle.net/Xsrdb/)。

<script id="firstTemplate" type="text/x-jsrender">
     {{for segments}}
        <b>{{:#index}}</b>
    {{/for}}
    {{for segments tmpl='#secondTemplate' ~parent_index=#index}}
        <b>{{:#index}}</b>
    {{/for}}
</script>

<script id="secondTemplate" type="text/x-jsrender">
    <div>
        {{>~parent_index/}}
        <i>{{>name/}}</i>
    </div>
</script>

有人知道如何解决这个问题吗?

提前致谢。

3 个答案:

答案 0 :(得分:2)

在您提供的示例中,您只需在secondTemplate中使用{{>#index}}即可获取元素的索引。

<script id="secondTemplate" type="text/x-jsrender">
    <div>
        <b>{{>#index}}</b>
        <i>{{>name/}}</i>
    </div>
</script>

以下是jsFiddle中的示例:http://jsfiddle.net/Xsrdb/1/

请注意,如果您需要父节点的索引,则可以使用:

{{>#parent.index}}

答案 1 :(得分:1)

您的第二个模板,您可以写为{{for segments tmpl='#secondTemplate' ~parent_index=#index/}},在此时将〜parent_index设置为#index,但此时的#index未定义,因为您不在重复模板中(即'项目'视图)。

如果使用以下数据,索引将显示:

var data = [{
   segments: [
       {name: 'a'},
       {name: 'b'}
   ]
},{
   segments: [
       {name: 'x'},
       {name: 'y'}
   ]
}];

答案 2 :(得分:0)