我正在尝试了解有关jQuery模板的更多信息,但似乎无法在模板中执行任何JS调用。
<script id="log-item" type="text/x-jquery-tmpl">
{{if title.length }}
<h3 style="padding-bottom:5px;">${ title }</h3>
{{/if}}
objectToString(${ detail });
</script>
请注意,我的objectToString()函数永远不会被调用,只是呈现为字符串。我试着把它包裹在{{}}中,但是没有运气。那里有谁可以提供帮助?
答案 0 :(得分:8)
安东尼,你可以。您的调用方法需要在模板标记内,如下所示:
<script id="log-item" type="text/x-jquery-tmpl">
{{if title.length }}
<h3 style="padding-bottom:5px;">${ title }</h3>
{{/if}}
<p>
Detail: ${ objectToString( detail ) }
</p>
</script>
答案 1 :(得分:2)
我不确定您的objectToString位于何处,但如果您看到引用here,您会看到它们将必要的辅助函数添加到.tmpl(方法)中。
这是一个例子......我试图让它与问题中的内容类似......
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Test jquery Templates</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.4.min.js'></script>
<script type='text/javascript' src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
</head>
<body>
<script id="testTemplate" type="text/x-jquery-tmpl">
{{if title.length}}
<h3>${title}</h3>
<p>Detail: ${$item.objectToString("detail")}</p>
{{/if}}
</script>
<div id="bookList"></div>
<script type='text/javascript'>
$(function(){
var book = [
{ title: "Goodnight, World!",
detail: { author: "Jojo Mojo", synopsis : "What the ..." }},
{ title: "Rainbow",
detail: { author: "Cookie", synopsis : "Huh?" }}
];
$("#testTemplate").tmpl(book, {
objectToString : function(key) {
var detail = this.data[key];
return detail.author + " " + detail.synopsis;
}
}).appendTo("#bookList");
});
</script>
</body>
</html>
你可以看到它here。