在Mustache JS中包含部分内容

时间:2014-06-12 17:16:12

标签: javascript mustache

我在var template中有一个html模板,在var obj中有一个对象 我在 Javascript 中调用我的模板。

var html = Mustache.render(template, obj, {
  templateRef: "path/template"
});

如果我是console.log html,原始模板会完美显示,但部分(templateRef)部分根本不会呈现。

在我的模板中,我有一个像这样的部分引用:

{{> templateRef}}

我试图将部分放在同一级别(删除路径),包括扩展名(。mustache)等等。但似乎没有任何效果。

任何人都知道我错过了什么?

2 个答案:

答案 0 :(得分:5)

Mustache.js似乎不支持specifying a partial by its path

  

对象应使用partial的名称键入,其值应为部分文本

您必须检索模板的文本并将其提供给Mustache.render()(例如,使用jQuery):

$.get('path/template.mustache', function (partialTemplate) {

  var html = Mustache.render(template, obj, {
    templateRef: partialTemplate
  });

  // ...

}, 'text');

答案 1 :(得分:3)

编辑与MustacheJS相关的答案(不是把手 - 我的错误)。您应该能够将Partial模板传递到主模板,如下所示:

var data = {
    firstName: "Christophe",
    lastName: "Coenraets",
    address: "1 Main street",
    city: "Boston",
    state: "MA",
    zip: "02106"
};

var template = "<h1>{{firstName}} {{lastName}}</h1>{{>address}}";
var partials = {address: "<p>{{address}}</p>{{city}}, {{state}} {{zip}}"};
var html = Mustache.to_html(template, data, partials);
$('#sampleArea').html(html);

JsFiddle:http://jsfiddle.net/LUvpM/
参考:http://coenraets.org/blog/2011/12/tutorial-html-templates-with-mustache-js/