如何使用HandlebarJS加载多个模板

时间:2017-05-29 22:10:21

标签: javascript jquery templates handlebars.js

我目前正在构建一个小的Handlebars.js应用程序。我没有经验,因为我正在学习,所以我一直在努力解决一些问题。

我的第一个问题是加载模板。

目前,我需要加载的每个模板都有这样的函数

var populateDocs = function() {
   var srcContent = $( '#docs-template' ).html(),
        contentTemplate = Handlebars.compile( srcContent ),
        htmlContent = contentTemplate( content.getItem( 'docs' ) );

        $( '#docs' ).append( htmlContent );
};

我正在从content.json文件中读取模板,所以一旦这个文件准备就绪,我会调用多个函数来填充每个模板。

content.onReady(
    function() {
        populateFooter();
        populateHomework();
        populateDocs();
        populateContact();
        generateTabs();
    }
);

我的问题是。有没有办法可以加载所有这些模板而无需为每个模板调用每个函数?

1 个答案:

答案 0 :(得分:1)

我认为你能做的最好的事情就是把事情做得更好。

如果所有populateXxx()函数都遵循与populateDocs()相同的模式(或者可以这样做),那么您可以写:

var populate = function(id) {
    $('#'+id).append(Handlebars.compile($('#'+id+'-template').html())(content.getItem(id)));
};

content.onReady(function() {
    populate('footer');
    populate('homework');
    populate('docs');
    populate('contact');
    generateTabs();
});

content.onReady(function() {
    ['footer', 'homework', 'docs', 'contact'].forEach(populate);
    generateTabs();
});