我是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));
});
那么,是否有可能在外部文件中为模板定义html而不是.js,并且我在没有$ .templates指令的情况下定义了html?
由于
答案 0 :(得分:3)
除了这里的样本
http://www.jsviews.com/#samples/jsr/composition/remote-tmpl
你已经遵循了,这里有两个非常简单的样本:
http://www.jsviews.com/#compiletmpl
第一个示例:“...从标记字符串注册模板(在这种情况下,从脚本文件中的服务器获取)”使用js文件。
但第二个示例:“...这里是同一个示例的变体,我们获取包含模板标记的文本文件”使用.txt文件(也可以是.html文件)包含标记。