如何从 handlebars.js 部分加载多个模板
How to load multiple templates from handlebars.js partial
有没有一种简单的方法可以使用 handlebars.js 加载其中包含多个模板的部分,就像您可以使用 mustache.js 和 jQuery plugin from "jonnyreeves"[=13 一样=]
例如:
$.Mustache.load('./templates/greetings.htm').done(function () {
$('body').mustache('simple-hello', viewData);
});
在 Handlebars.js 中,您需要使用 Handlebars.registerPartial
注册每个部分
你可以这样做:
Javascript
$(document).ready(function() {
//Get template from server
$.get("http://example.com/template.html").done(function(response) {
var content = $($.parseHTML(response));
//Compile main template
var template = Handlebars.compile(content.filter("#test-template").html());
//You need to register each partial
Handlebars.registerPartial({
foo: content.filter("#foo-partial").html(),
bar: content.filter("#bar-partial").html()
});
//Your data
var data = {
"test": [{
foo: "Foo",
"foo_bar": "Foo-Bar",
bar: "Bar",
bar_foo: "Bar-Foo"
}, {
foo: "Foo2",
"foo_bar": "Foo-Bar2",
bar: "Bar2",
bar_foo: "Bar-Foo2"
}]
};
document.body.innerHTML = template(data);
});
});
template.html
<!-- template.html -->
<script id="test-template" type="text/x-handlebars-template">
{{#each test}}
{{> foo}}
{{> bar}}
{{/each}}
</script>
<script id="foo-partial" type="text/x-handlebars-template">
<div class="foo">
<h2>{{foo}}</h2>
<div class="foo_bar">{{foo_bar}}</div>
</div>
</script>
<script id="bar-partial" type="text/x-handlebars-template">
<div class="bar">
<h2>{{bar}}</h2>
<div class="bar_foo">{{bar_foo}}</div>
</div>
</script>
有没有一种简单的方法可以使用 handlebars.js 加载其中包含多个模板的部分,就像您可以使用 mustache.js 和 jQuery plugin from "jonnyreeves"[=13 一样=]
例如:
$.Mustache.load('./templates/greetings.htm').done(function () {
$('body').mustache('simple-hello', viewData);
});
在 Handlebars.js 中,您需要使用 Handlebars.registerPartial
你可以这样做:
Javascript
$(document).ready(function() {
//Get template from server
$.get("http://example.com/template.html").done(function(response) {
var content = $($.parseHTML(response));
//Compile main template
var template = Handlebars.compile(content.filter("#test-template").html());
//You need to register each partial
Handlebars.registerPartial({
foo: content.filter("#foo-partial").html(),
bar: content.filter("#bar-partial").html()
});
//Your data
var data = {
"test": [{
foo: "Foo",
"foo_bar": "Foo-Bar",
bar: "Bar",
bar_foo: "Bar-Foo"
}, {
foo: "Foo2",
"foo_bar": "Foo-Bar2",
bar: "Bar2",
bar_foo: "Bar-Foo2"
}]
};
document.body.innerHTML = template(data);
});
});
template.html
<!-- template.html -->
<script id="test-template" type="text/x-handlebars-template">
{{#each test}}
{{> foo}}
{{> bar}}
{{/each}}
</script>
<script id="foo-partial" type="text/x-handlebars-template">
<div class="foo">
<h2>{{foo}}</h2>
<div class="foo_bar">{{foo_bar}}</div>
</div>
</script>
<script id="bar-partial" type="text/x-handlebars-template">
<div class="bar">
<h2>{{bar}}</h2>
<div class="bar_foo">{{bar_foo}}</div>
</div>
</script>