Handlebars.js:使用部分像普通的完整模板一样

Jon*_*ine 19 javascript jquery templates handlebars.js

我有一个模板,我想将它们作为部分使用,并且本身来自javascript.

Jon*_*ine 24

如果模板是预编译的,您可以Handlebars.partials['partial-name']()通过{{> partial}}帮助程序访问部分文件,也可以通过模板调用模板.

这很好,因为您可以编写一个实用程序函数来呈现模板,无论它是完整的模板还是部分模板.

例如:

function elementFromTemplate(template, context) {
    context = context || {};
    var temp = document.createElement('div');
    temp.innerHTML = templates[template] ? templates[template](context) : Handlebars.partials[template](context);
    return temp.firstChild;
}
Run Code Online (Sandbox Code Playgroud)

myDiv.appendChild(elementFromTemplate('myPartial', context));

myDiv.appendChild(elementFromTemplate('a-whole-template'));

希望这能帮助任何想要像我一样使用Handlebars的人.


Fre*_*old 14

反过来更容易 - 将所有模板编译为普通模板,然后将它们作为部分模板使用:

Handlebars.partials = Handlebars.templates
Run Code Online (Sandbox Code Playgroud)

这样就可以像往常一样使用模板,也可以使用部分模板:

{{> normalTemplate}}
Run Code Online (Sandbox Code Playgroud)

  • 非常有趣的"黑客",确实对预编译的模板非常有用! (2认同)

小智 5

要从javascript渲染部分,您可以使用

Handlebars.partials["myPartial"]()
Run Code Online (Sandbox Code Playgroud)