21

我有一个模板,我既想将其用作部分模板,也想单独使用 javascript。

4

4 回答 4

25

如果您的模板是预编译的,您可以通过帮助程序访问您的部分,也可以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;
}

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

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

希望这可以帮助任何想像我一样使用把手的人。

于 2013-08-20T06:03:15.547 回答
15

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

Handlebars.partials = Handlebars.templates

这使得可以像往常一样使用您的模板,也可以作为部分模板使用:

{{> normalTemplate}}
于 2014-01-16T21:37:03.200 回答
5

要从 javascript 呈现部分内容,您可以使用

Handlebars.partials["myPartial"]()
于 2014-02-24T15:52:16.397 回答
2

要使用模板中的部分内容,只需包含{{> partialName}}.

<script id="base-template" type="text/x-handlebars-template">
  <div>
    {{> person}}  <!-- This is the partial template name -->
  </div>
</script>

<script id="partial-template" type="text/x-handlebars-template">
  <div class="person">
    <h2>{{first_name}} {{last_name}}</h2>
    <div class="phone">{{phone}}</div>
  </div>
</script>

<script type="text/javascript">
  $(document).ready(function() {
    var template = Handlebars.compile($("#base-template").html());

    //Aliasing the template to "person"
    Handlebars.registerPartial("person", $("#partial-template").html()); 

    template(yourData);
  }
</script>
于 2013-08-19T04:47:40.870 回答