Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调用jquery模板中嵌套的{{tmpl}}标记中的函数?_Jquery_Jquery Templates - Fatal编程技术网

如何调用jquery模板中嵌套的{{tmpl}}标记中的函数?

如何调用jquery模板中嵌套的{{tmpl}}标记中的函数?,jquery,jquery-templates,Jquery,Jquery Templates,这是一个基于jquery tmpl API文档中代码的简单示例。我想使用一个嵌套的{{tmpl}}标记——这里是“titleTemplate”。我想在外部模板和嵌套模板中使用各种辅助函数。这个示例有一个名为“embolden”的简单帮助函数,它被传递给初始tmpl()调用 下面的工作。我可以在titleTemplate中增加名称数据。但是看起来很乱。有没有更干净的方法?因为formatHelpers被传递到原始tmpl()调用中,所以确实有必要将其传递到{{tmpl}}标记中吗 <scri

这是一个基于jquery tmpl API文档中代码的简单示例。我想使用一个嵌套的{{tmpl}}标记——这里是“titleTemplate”。我想在外部模板和嵌套模板中使用各种辅助函数。这个示例有一个名为“embolden”的简单帮助函数,它被传递给初始tmpl()调用

下面的工作。我可以在titleTemplate中增加名称数据。但是看起来很乱。有没有更干净的方法?因为formatHelpers被传递到原始tmpl()调用中,所以确实有必要将其传递到{{tmpl}}标记中吗

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
    {{tmpl($item.data, formatHelpers) "#titleTemplate"}}
    <tr class="detail"><td>Director: ${$item.embolden(Director)}</td></tr>
</script>

<script id="titleTemplate" type="text/x-jquery-tmpl"> 
    <tr class="title"><td>${$item.embolden($item.data.Name)}</td></tr>
</script>

<table><tbody id="movieList"></tbody></table>

<script>
var formatHelpers = { 
    embolden: function(i) {
        return "*" + i + "*";
    }
};

var movies = [
    { Name: "The Red Violin", Director: "François Girard" },
    { Name: "Eyes Wide Shut", Director: "Stanley Kubrick" },
    { Name: "The Inheritance", Director: "Mauro Bolognini" }
];

/* Render the template with the movies data */
$( "#movieTemplate").tmpl(movies, formatHelpers).appendTo("#movieList");
</script>

{{tmpl($item.data,formatHelpers)”#titleTemplate“}
董事:${$item.embolden(董事)}
${$item.embolden($item.data.Name)}
var formatHelpers={
壮胆:功能(一){
返回“*”+i+“*”;
}
};
var电影=[
{姓名:“红色小提琴”,导演:“弗朗索瓦·吉拉德”},
{姓名:“闭上眼睛”,导演:“斯坦利·库布里克”},
{姓名:“遗产”,导演:“毛罗·博洛尼尼”}
];
/*使用电影数据渲染模板*/
$(“#movieTemplate”).tmpl(电影,格式帮助程序).appendTo(“#movieList”);

对于您的示例,您需要做的就是

{{tmpl($item.data, $item) "#titleTemplate"}}
对示例进行编码。

另一种方法是在全局范围内定义FormatHelper,您应该能够在模板中直接调用它们

var formatHelpers = { 
    embolden: function(i) {
        return "*" + i + "*";
    }
};
$(function() {
    var movies = [
        {
        Name: "The Red Violin",
        Director: "François Girard"},
    {
        Name: "Eyes Wide Shut",
        Director: "Stanley Kubrick"},
    {
        Name: "The Inheritance",
        Director: "Mauro Bolognini"}
    ];

    $("#movieTemplate").tmpl(movies).appendTo("#movieList");
});
在模板内部,您可以执行以下操作:

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
    {{tmpl($item.data) "#titleTemplate"}}
    <tr class="detail"><td>Director: ${formatHelpers.embolden(Director)}</td></tr>
</script>

<script id="titleTemplate" type="text/x-jquery-tmpl"> 
    <tr class="title"><td>${formatHelpers.embolden(Name)}</td></tr>
</script>

{{tmpl($item.data)“#titleTemplate”}
主管:${formatHelpers.Enbolden(主管)}
${formatHelpers.Enbolden(名称)}

上的代码示例。

谢谢!第一个解决方案是我一直在寻找的,因为它允许我在formatHelpers中编写函数,其中“this”指的是当前的tmplItem。