我有一个返回项目的web服务,它可以是几种类型之一。我想使用jquery来设置它。根据它的对象类型,使用适当的模板。
我想知道存储各种模板的最佳方法是什么。我想把它们放在一个名为ItemTemplates.js的文件中,或者其他什么都可以,并且每个文件都有一个名字,如Cat_Template Dog_Template,我可以使用switch {}根据对象返回的类型加载正确的名称。 / p>
jquery模板可以存储在js文件中吗?还有另一种好方法吗?我正在使用asp.net所以也许有解决方案吗?
答案 0 :(得分:1)
优秀的jQote(overview,latest version)是一个灵活的jQuery模板库。来自文档:
<script type="text/html" id="template">
<![CDATA[
<p class="greetings">
Hello <%= this.name %>, how are you doing?
May I offer you
<% this.is_starving() ? %>
some tasty peasant?
<% : %>
a refreshing Singha?
<% ; %>
</p>
]]>
</script>
您可以在单个文件中存储任意数量的这些脚本块,我通常将其与我的其余代码一起放入主.js
。由于它们是标准的HTML脚本标记,因此它们也可以进入主页面,或者通过AJAX加载并写入文档。
答案 1 :(得分:1)
我构建了一个轻量级模板管理器,它通过Ajax加载模板,允许您将模板分成更易于管理的模块。它还执行简单的内存中缓存以防止不必要的HTTP请求。 (为简洁起见,我在这里使用了jQuery.ajax)
var TEMPLATES = {};
var Template = {
load: function(url, fn) {
if(!TEMPLATES.hasOwnProperty(url)) {
$.ajax({
url: url,
success: function(data) {
TEMPLATES[url] = data;
fn(data);
}
});
} else {
fn(TEMPLATES[url]);
}
},
render: function(tmpl, context) {
// Apply context to template string here
// using library such as underscore.js or mustache.js
}
};
然后,您将使用以下代码,通过回调处理模板数据:
Template.load('/path/to/template/file', function(tmpl) {
var output = Template.render(tmpl, { 'myVar': 'some value' });
});
答案 2 :(得分:0)
如果你指的是在javascript文件中存储这样的东西:
<script id="myTemplate" type="text/x-jquery-tmpl">
<li>
<a href="${Url}" target="_blank">${Text}</a>
</li>
</script>
这是不可能的,因为HTML和.js文件不会被解析为HTML。我能想到的唯一选择是在$(document).ready()期间使用类似
之类的东西从.js文件动态生成这样的HTML。document.write('<script id="myTemplate" type="text/x-jquery-tmpl">template HTML</script>');
或
$('<script id="myTemplate" type="text/x-jquery-tmpl"></script>')
.html('template HTML')
.appendTo('body');
之前没有测试过,所以我不知道它是否有用。