如何使用jsrender的外部html模板

时间:2014-12-20 15:52:04

标签: jsrender

我是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?

由于

1 个答案:

答案 0 :(得分:3)

除了这里的样本

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

你已经遵循了

,这里有两个非常简单的样本:

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

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

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