您可以将JQuery模板存储在.js文件或类似文件中吗?

时间:2011-04-08 11:57:31

标签: jquery asp.net

我有一个返回项目的web服务,它可以是几种类型之一。我想使用jquery来设置它。根据它的对象类型,使用适当的模板。

我想知道存储各种模板的最佳方法是什么。我想把它们放在一个名为ItemTemplates.js的文件中,或者其他什么都可以,并且每个文件都有一个名字,如Cat_Template Dog_Template,我可以使用switch {}根据对象返回的类型加载正确的名称。 / p>

jquery模板可以存储在js文件中吗?还有另一种好方法吗?我正在使用asp.net所以也许有解决方案吗?

3 个答案:

答案 0 :(得分:1)

优秀的jQote(overviewlatest 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');

之前没有测试过,所以我不知道它是否有用。