是否可以在JavaScript變量中定義視圖模板而不是腳本標記或文件?CanJS/JavascriptMVC:如何將視圖模板存儲在變量中
事情是這樣的:
var template = "<h1><%= title %> </h1 >";
var rendered = can.view.render(template, data);
是否可以在JavaScript變量中定義視圖模板而不是腳本標記或文件?CanJS/JavascriptMVC:如何將視圖模板存儲在變量中
事情是這樣的:
var template = "<h1><%= title %> </h1 >";
var rendered = can.view.render(template, data);
好,大量的研究後,因爲它不是在文件寫的,我發現如何做到這一點。 訣竅是你必須先註冊你的模板和一個id。 如果您使用腳本標記或url來查找模板,則此步驟由canJS自動完成。
所以,如果你想呈現模板,存儲在一個變量,你必須做這樣的事情:
var template = "<h1><%= title %> </h1 >";
can.view.ejs('my-view-id', template);
var rendered = can.view.render('my-view-id', data);
現在,你必須在rendered
文檔片段。
看看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');
});
});
+1因爲這可能是一個很好的替代解決方案,但我想使用EJS模板,並使用canjs呈現它們。謝謝! –