刚接触 Handlebars 问下如何将 Ajax 的数据与外部 Handlebars 模板绑定,然后再插入到页面中~

发布于 2022-09-01 16:21:36 字数 628 浏览 27 评论 0

我有一共有三个文件:

//- 模板文件
menu.hbs


<script id="template" type="text/x-handlebars-template">
{{#each this}}
    <h3>{{title}}</h3>
    <div>{{content}}</div>
{{/each}}
</script>



//- JSON数据
menu.json
[{
    "title": "统计报表",
    "content": "统计报表的内容~"
},{
    "title": "活动统计",
    "content": "活动统计的内容~"
},{
    "title": "店铺统计",
    "content": "店铺统计的内容~"
}]

//- 页面入口文件
index.html


<div class="wrapper" id="wrapper"></div>


我自己的思路是这样子的,我先 ajax 请求加载进来 json 数据,成功之后,再 ajax 请求 Handlebars 模板,再用前的 json 数据与 模板进行绑定,最后插入到页面中~

感觉很别扭,不知道是否正确~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

静若繁花 2022-09-08 16:21:37

模板文件可以直接放在html里面的

红焚 2022-09-08 16:21:37
javascript$.when(/*请求数据*/, /*请求模板*/).done(function(a1,  a2){
  // 预编译,加入数据,插入dom
});
⊕婉儿 2022-09-08 16:21:37

模板文件既可以放到js里面,也可以放到html文件里面或者单独的文件。

js里面就是字符串:

'{{#each this}}' +
'    <h3>{{title}}</h3>' +
'    <div>{{content}}</div>' +
'{{/each}}' 

html里面就是你上面写的那种:

单独文件就要异步请求: 可以使用上面那个朋友的 $.when方法,或者现在es6的promise。

心病无药医 2022-09-08 16:21:37

和你所说基本一样,结合你的代码大致实现如下:

$.getJson('menu.json',function(res){
    if(res.rtnCod == '00000000'){
        var tpl = Handlebars.compile($('#template').html());
        var html = tpl(res);
        $('#wrapper').html(html);
    }
)

数据和模板直接分离,x-handlebars-template建议直接写到html里面。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文