web 开发中,js 解析JSON 是经常的事情。非常繁琐。handlebars 使用了模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧json对象放到你定的模版中

html代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Handlebars demo</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="js/handlebars-1.0.0.beta.6.js"></script>
<script type="text/javascript" src="js/myjs.js"></script>
<style type="text/css"></style>
</head>
<body>
<h2>Simple handlebars demo</h2>
<button id="btn_simple">Click me</button>
<div id="my_div"> </div>
<h2>Handlebars Helpers demo</h2>
<button id="btn_helper">Click me</button>
<div id="helper_div"> </div>
<script id="some-template" type="text/x-handlebars-template">
<table>
<thead>
<th>Username</th>
<th>Real Name</th>
<th>Email</th>
</thead>
<tbody>
{{#if users}}
<tr>
<td>{{username}}</td>
<td>{{firstName}} {{lastName}}</td>
<td>{{email}}</td>
</tr>
{{else}}
<tr>
<td colspan="3">NO users!</td>
</tr>
{{/if}}
</tbody>
</table>
</script>
<script id="helper-template" type="text/x-handlebars-template">
<div>
<h1>By {{fullName author}}</h1>
<div>{{body}}</div> <h1>Comments</h1> {{#each comments}}
<h2>By {{fullName author}}</h2>
<div>{{body}}</h2>
{{/each}}
</div>
</script>
</body>
</html>

js代码

    $(document).ready(function(){
Handlebars.registerHelper('fullName', function(person) {
return person.firstName + " " + person.lastName;
});
$("#btn_simple").click(function(){
// $(this).hide();
showTemplate();
});
$("#btn_helper").click(function(){ showHowUseHelper();
});
});
// var context = {title: "My New Post", body: "This is my first post!"};
var persion = {title :"My New Post",body:"This is my first post!"}
function showTemplate(){
var source = $("#some-template").html();
var template = Handlebars.compile(source);
var data = { users: [
{username: "alan", firstName: "Alan", lastName: "Johnson", email: "alan@test.com" },
{username: "allison", firstName: "Allison", lastName: "House", email: "allison@test.com" },
{username: "ryan", firstName: "Ryan", lastName: "Carson", email: "ryan@test.com" }
]};
$("#my_div").html(template(data));;
} function showHowUseHelper(){
var context = {
author: {firstName: "Alan", lastName: "Johnson"},
body: "I Love Handlebars",
comments: [{
author: {firstName: "Yehuda", lastName: "Katz"},
body: "Me too!"
}]
};
var source = $("#helper-template").html();
var template = Handlebars.compile(source);
$("#helper_div").html(template(context));; }

最新文章

  1. C#6新特性,让你的代码更干净
  2. 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功
  3. SU Demos-06Selecting Traces
  4. [原]零基础学习视频解码之android篇系列文章
  5. php接口和多态的概念以及简单应用
  6. AJAX(学习笔记一)
  7. hdu 2079 选课时间_母函数
  8. ZOJ1463:Brackets Sequence(间隙DP)
  9. Ubuntu系统查看显卡型号和NVIDIA驱动版本
  10. 关于系统弹出错误:429 , ActiveX 部件不能创建对象 的解决方法
  11. C#.NET 中的 Timer 计时器及 3 种使用方法
  12. ATDD
  13. 【转】修改mysql数据库的用户名和密码
  14. Android应用安全之数据传输安全
  15. POJ 3017 Cut the Sequence
  16. 记录一下使用Ubuntu16.0.4配置和使用docker registry
  17. 所有权链(Ownership Chain)
  18. gradle/maven/eclipse工程相互转化
  19. How to read out WhatsApp messages with Tasker and react on their content in real time
  20. 如何面试Web前端开发

热门文章

  1. LintCode - Copy List with Random Pointer
  2. Kettle变量和自己定义java代码的实例应用
  3. r绘图基本
  4. 如何查询表A中的某字段的值在表B中不存在?
  5. tomcat安装不成功.提示:failed to install tomcat6 service ,check your setting and permissions
  6. 优矿众包对冲基金计划”优选策略---100w实盘资金管理权!!
  7. 高速入门:十分钟学会Python
  8. SVN版本冲突,导致出现Files 的值“ &lt; &lt; &lt; &lt; &lt; &lt; &lt; .mine”无效。路径中具有非法字符。
  9. Discuz论坛post登录C#源码
  10. 【Java面试题】12 内部类可以引用它的包含类的成员吗?有没有什么限制?