这是一个基于jquery-tmpl API文档中的代码的简单示例。我想使用嵌套的{{tmpl}}标签 - 这里是“titleTemplate”。我想在外部模板和嵌套模板中使用各种辅助函数。这个例子有一个简单的辅助函数叫做“embolden”,它被传递给初始的tmpl()调用。
以下作品。我能够在titleTemplate中加入Name数据。但它看起来很混乱。有更清洁的方法吗?由于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>
答案 0 :(得分:12)
以您的示例为例,您需要做的就是
{{tmpl($item.data, $item) "#titleTemplate"}}
jsfiddle上的代码示例。
另一种方法是在全局范围内定义formatHelpers,您应该可以直接在模板中调用它们。
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>
jsfiddle上的代码示例。