5

我想在网页的不同部分使用嵌套模板。对于不同的部分,我需要从嵌套模板中的数组中获取一个值。我不能使用 for 循环,因为每个部分在网站上都有不同的类和位置。是否可以将变量传递到嵌套模板中?以下代码简化了我想要实现的目标:

<script id="myBtnTmpl" type="text/x-jsrender">
    <button class="btn">        
        {{:myData.myArray[INDEX_VARIABLE].btnName}}
    </button>
</script>

//  Here I want to use INDEX_VARIABLE = 0
<div class="BigButton">
    {{if myData tmpl="myBtnTmpl"/}}
</div>

//  Here I want to use INDEX_VARIABLE = 1
<div class="MediumButton">
    {{if myData tmpl="myBtnTmpl"/}}
</div>

//  Here I want to use INDEX_VARIABLE = 2
<div class="SmallButton">
    {{if myData tmpl="myBtnTmpl"/}}
</div>

另一个问题:当使用嵌套模板时,是否可以在没有 if 语法的情况下包含像这样的嵌套模板 {{tmpl="myBtnTmpl"/}}?

谢谢!

4

1 回答 1

7

是的,您可以在您使用的标签上设置命名模板参数tmpl="myBtnTmpl"(无论是{{if}}标签还是{{for}}标签):

<div class="BigButton">
    {{for myData ~arrIndex=0 tmpl="myBtnTmpl"/}}
</div>

然后,您可以像访问已注册的帮助程序一样访问模板参数 - 通过将“~”附加到名称。

<button class="btn">        
    {{:myData.myArray[~arrIndex].btnName}}
</button>

顺便说一句,您还可以使用 render 方法传递变量和辅助函数(除了数据)。我刚刚添加了一个新的示例演示来展示这一点。

所以这意味着模板可以类似地“参数化”,无论您是从代码中呈现它们,还是像在上面的嵌套模板中那样以声明方式呈现它们。

于 2012-07-05T03:46:55.220 回答