【发布时间】:2014-12-20 15:52:03
【问题描述】:
我是 jsrender 的新手,我有一些问题。我阅读了其他一些讨论,但我不明白如何做我想做的事。
我使用带有此内容的外部 js 文件使所有与 jsrender 一起工作:
$.templates('test', '<div>{{:name}}</div>');
并加载它:
function lazyGetTemplate(name) {
// If the named remote template is not yet loaded and compiled
// as a named template, fetch it. In either case, return a promise
// (already resolved, if the template has already been loaded)
var deferred = $.Deferred();
if ($.templates[name]) {
deferred.resolve();
} else {
$.getScript(
"/template/"
+ name + ".js")
.then(function() {
if ($.templates[name]) {
deferred.resolve();
} else {
alert("Script: \"" + name + ".js\" failed to load");
deferred.reject();
}
});
}
return deferred.promise();
}
function showPeople() {
$.when(
lazyGetTemplate("test")
)
.done(function() {
var html = $.templates.test.render(MyObject);
$("#dest").html(html);
});
}
我可以有一个只有 html 的外部模板吗?在一行的 javascript 语法中包含 html 是不可读的。
我还尝试了另一种方法,使用 tmpl.loader (https://github.com/stevenmhunt/tmpl.loader)。 有了这个,我在里面定义了 html 模板,然后我可以用它来渲染它:
$.tmplLoader.ready(function() {
$('#dest').html($.tmplLoader('user-info', MyObject));
});
那么,是否可以在没有 .js 的外部文件中为模板定义 html,并且我在没有 $.templates 指令的情况下定义了 html?
谢谢
【问题讨论】:
标签: jsrender