【问题标题】:How to use external html template with jsrender如何在 jsrender 中使用外部 html 模板
【发布时间】: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


    【解决方案1】:

    除了这里的示例

    http://www.jsviews.com/#samples/jsr/composition/remote-tmpl

    你已经遵循了,这里有两个非常简单的示例:

    http://www.jsviews.com/#compiletmpl

    第一个示例:“...从标记字符串注册模板(在本例中,从脚本文件中的服务器获取)”使用 js 文件。

    但是第二个示例:“...这是同一示例的变体,我们在其中获取包含模板标记的文本文件” 使用 .txt 文件(也可以是.html 文件)包含标记。

    【讨论】:

    • 如何解决 CORS 问题?
    猜你喜欢
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多