javascript - JsRender:如何将变量传递到嵌套模板中

标签 javascript jquery jsrender

我想在网页的不同部分使用嵌套模板。对于不同的部分,我需要从嵌套模板中的数组中获取一个值。我不能使用 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"/}} 这样的嵌套模板?

谢谢!

最佳答案

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

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

然后您可以像访问已注册的助手一样访问模板参数 - 通过在名称后附加“~”。

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

顺便说一句,您还可以使用 render 方法传递变量和辅助函数(除了数据之外)。我刚刚添加了一个新的 sample demo表明。

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

关于javascript - JsRender:如何将变量传递到嵌套模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11325085/

相关文章:

javascript - HTMLAnchor 元素下载在 Typescript 中不起作用

javascript - 使用jquery同时更改情侣网站上的文本字符串

jquery - JSVIEW 数据链接模板以维护 UI 上的 x 和 y 索引

.net - 用于 Web 开发的 MVVM

javascript - JsRender if-else 什么都不渲染

javascript - 修改 svg :path using d3

javascript - 根据内容动态改变div元素的高度

javascript - 将 json 对象转换为 json 字符串并使用它的函数?

javascript - 来自 php 的 JSON 解码信息

javascript - 使用 Angular Directive(指令)作为自定义指令的属性