是否可以在javascript变量中定义视图模板,而不是脚本标记或文件?
这样的事情:
var template = "< h1 ><%= title %> < / h1 >";
var rendered = can.view.render(template, data);
答案 0 :(得分:4)
好的,经过大量的研究,因为它没有写在文档中,我发现了如何做到这一点。 诀窍是你必须先用id注册你的模板。 如果您使用脚本标记或网址来查找模板,则此步骤由canJS自动完成。
因此,如果要渲染存储在变量中的模板,则必须执行以下操作:
var template = "< h1 ><%= title %> < / h1 >";
can.view.ejs('my-view-id', template);
var rendered = can.view.render('my-view-id', data);
现在您在rendered
中有文档片段。
答案 1 :(得分:1)
看看jquery utils字符串格式plugin。有一个示例显示了从模板中呈现的html定义为字符串。
创建模板:
$.tpl('tweet', [
'<div id="tweet-{id:s}" class="tweet">',
'<div class="tweet-body"><b>@{from:s}</b>: {body:s}',
'(<a href="{href:s}" class="tweet-date">',
'<abbr title="{timestamp:s}">{timesince:s}</abbr>',
'</a>)',
'</div>',
'</div>'
]);
渲染:
$.getJSON('/tweets/username/', function(resp, s){
$.each(resp.tweets, function(idx, tweet) {
$.tpl('tweet', {
id: tweet.id,
body: tweet.body,
from: tweet.screen_name,
timestamp: tweet.pub_time,
timesince: $.timeago(tweet.pub_time)
}).appendTo('#tweet-list');
});
});