Hogan.js在预编译模板中偏爱

时间:2014-06-17 15:30:16

标签: javascript node.js hogan.js

是否可以在已编译的模板中包含部分内容?它似乎是可能的,因为在编译对象中引用了部分名称,但我不知道如何让它工作。

我正在服务器端(node.js)预编译Hogan.js模板,并在客户端提供它们。这是模板的片段:

<ul class="log-{{id}}">
  {{#entries}}
    {{> entry}}
  {{/entries}}
</ul>

编译完模板后,我在对象中看到了一个partials属性,其键为<entry0

我可以使用以下方法在客户端呈现模板:

var data = {id: 11, entries: [{ id: 1, name: 'Entry 1'}, {id: 2, name: 'Entry 2'}]};

template = new Hogan.Template(compiledTemplate);
template.render(data);

模板渲染得很好,但{{#entries}} {{/entries}}块内没有任何内容。部分本身也是预编译的,可在客户端使用。我试图以几种不同的方式传递它,包括:

 template.render(data, {partials: { entry: compiledEntryTemplate }});

所有迹象似乎都表明这应该是可能的,但我无法弄明白或找到任何指出如何做的文档。我正在使用Hogan.js 3.0.1

2 个答案:

答案 0 :(得分:0)

管理好了。以下内容将使您编译的部分可在编译模板中访问。

 template.render(data, { entry: new Hogan.Template(compiledEntryTemplate) });

答案 1 :(得分:0)

@TJ你可以看看hogan.js测试套件(https://github.com/twitter/hogan.js/blob/master/test/index.js)。在那里,您将找到一个名为&#34; Partial Basic&#34;读取

  var partialText = "this is text from the partial--the magic number {{foo}} is from a variable";
  var p = Hogan.compile(partialText);

  var text = "This template contains a partial ({{>testPartial}})."
  var t = Hogan.compile(text);

  var s = t.render({foo: 42}, {testPartial: p});
  is(s, "This template contains a partial (this is text from the partial--the magic number 42 is from a variable).", "partials work");