【问题标题】:Hogan.js partials in pre-compiled template预编译模板中的 Hogan.js 部分
【发布时间】:2014-06-17 15:30:16
【问题描述】:

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

我正在服务器端 (node.js) 预编译 Hogan.js 模板,并使其在客户端可用。这是模板的sn-p:

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

编译该模板后,我会在对象中看到一个 partials 属性,其键为 &lt;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

【问题讨论】:

  • 您的问题解决了吗?如果是,提供答案将很有用。

标签: javascript node.js hogan.js


【解决方案1】:

设法弄明白了。以下将使已编译的部分可在您编译的模板中访问。

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

【讨论】:

  • 我遇到了与您的问题中描述的相同(或相似)的问题,但我无法用这个答案解决它。
【解决方案2】:

@TJ 你可以看看 hogan.js 测试套件 (https://github.com/twitter/hogan.js/blob/master/test/index.js)。在那里你会发现一个名为“Partial Basic”的测试用例,内容为

var partialText = "这是部分文本——幻数 {{foo}} 来自变量"; var p = Hogan.compile(partialText); var text = "此模板包含一个部分 ({{>testPartial}})。" var t = Hogan.compile(文本); var s = t.render({foo: 42}, {testPartial: p}); is(s, "这个模板包含一个部分(这是来自部分的文本——幻数 42 来自一个变量)。", "部分工作");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多