Helpers


其实在Handlebars模板引擎之进阶我想说if else的功能的,可是由于这个功能在我的开发中我觉的鸡肋没啥用,就直接不用了。

因为if else只能进行简单判断,如果条件参数返回 false, undefined, null, "" 或 [](非真的值)时,Handlebars 将不渲染。

类似这样

{{#each this}}
{{#if this.show}} {{/if}}
{{/each}}

并不能进行二元的运算,类似这样

{{#each this}}
{{#if this.show == 'showtime' }} {{/if}}
{{/each}}

所以用的不多,如果有类似上面的二元的话,需要借助Helpers来操作。

具体来看下用Handlebars是什么东西。

var myTemplate = Handlebars.compile($("#table-template").html());
Handlebars.registerHelper("addOne", function(index, options) {
return parseInt(index, 10) + 1;
});
$('#table tbody').html(myTemplate(data));

注册Helper后,使用

<td>{{ addOne @index }}</td>

这里我就以上文中,表格序号为引。

表格需要以0开头应该是很怪,所以我们需要以1开头。如果只是简单的js的话,直接index+1就完事了。但是我们这是模板引擎,我们需要按照她的规则来。

这里我们就通过Handlebars.registerHelper()注册了一个Helper(上帝之手)。

然后传递一个helper的名称,一个回调函数,函数中的参数,就是我们注入进去的@index索引值。

效果:

更进一部的官方例子:

<div class="post">
<h1>By {{fullName author}}</h1>
<div class="body">{{body}}</div> <h1>Comments</h1> {{#each comments}}
<h2>By {{fullName author}}</h2>
<div class="body">{{body}}</div>
{{/each}}
</div>

模板

var context = {
author: {firstName: "Alan", lastName: "Johnson"},
body: "I Love Handlebars",
comments: [{
author: {firstName: "Yehuda", lastName: "Katz"},
body: "Me too!"
}]
}; Handlebars.registerHelper('fullName', function(person) {
return person.firstName + " " + person.lastName;
});

结果:

<div class="post">
<h1>By Alan Johnson</h1>
<div class="body">I Love Handlebars</div> <h1>Comments</h1> <h2>By Yehuda Katz</h2>
<div class="body">Me Too!</div>
</div>

Handlebars模板引擎之高阶的更多相关文章

  1. Handlebars模板引擎中的each嵌套及源码浅读

    若显示效果不佳,可移步到愚安的小窝 Handlebars模板引擎作为时下最流行的模板引擎之一,已然在开发中为我们提供了无数便利.作为一款无语义的模板引擎,Handlebars只提供极少的helper函 ...

  2. handlebars模板引擎使用初探1

    谈到handlebars,我们不禁产生疑问,为什么要使用这样的一个工具呢?它究竟能为我们带来什么样的好处?如何使用它呢? 一.handlebars可以干什么? 首先,我们来看一个案例: 有这样的htm ...

  3. Handlebars 模板引擎之前后端用法

    前言 不知不觉间,居然已经这么久没有写博客了,坚持还真是世界上最难的事情啊. 不过我最近也没闲着,辞工换工.恋爱失恋.深圳北京都经历了一番,这有起有落的生活实在是太刺激了,就如拿着两把菜刀剁洋葱一样, ...

  4. express-9 Handlebars模板引擎(2)

    视图和布局 视图通常表现为网站上的各个页面(它也可以表现为页面中AJAX局部加载的内容,或一封电子邮件,或页面上的任何东西).默认情况下,Express会在views子目录中查找视图.布局是一种特殊的 ...

  5. express-8 Handlebars模板引擎(1)

    简介 使用JavaScript生成一些HTML document.write('<h1>Please Don\'t Do This</h1>'); document.write ...

  6. Handlebars模板引擎之上手

    handlebars Handlebars,一个JavaScript模板引擎,是基于Mustache的扩展.模板引擎的都存在一个上下文环境,这是它的作用区间. 需求:基本使用 需要的库 <scr ...

  7. Handlebars模板引擎之进阶

    取得索引 我想取得索引作为序号这个是常用的.在handlebars也是存在的. 就是使用 @index 来获取索引 {{#each this}} <tr> <td>{{ @in ...

  8. 【转】在Express项目中使用Handlebars模板引擎

    原文:http://fraserxu.me/2013/09/12/Using-Handlebarsjs-with-Expressjs/ 最近在用Expressjs做一个项目,前后端都用它来完成.自己之 ...

  9. 【转链接】Handlebars模板引擎以及浅谈模板引擎的实现原理

    什么叫做“模板引擎“?我是这么理解的:就是对一些待填入数据的占位符的解析.如果你使用过Python的django框架,那你肯定是模板一点也不陌生.模板引擎就是解析模板的,把后端数据塞到前端页面模板. ...

随机推荐

  1. buntu14.04和16.04官方默认更新源sources.list和第三方源推荐(干货!)转

    配置完成后: sudo apt-get update 安装和删除软件: sudo apt-get install sudo apt-get remove buntu14.04和16.04官方默认更新源 ...

  2. BZOJ1258 [CQOI2007]三角形tri 模拟

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1258 题意概括 这种图中,一个三角形的三边如果被其他某一个三角形的一条边包括,那么我们说该三角形和 ...

  3. BZOJ1067 [SCOI2007]降雨量 线段树

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1067 题意概括 给定n组整数对(Xi,Yi),当Xi<Xj且Yi>=Yj时,如果对于任 ...

  4. P1141 01迷宫 DFS (用并查集优化)

    题目描述 有一个仅由数字00与11组成的n \times nn×n格迷宫.若你位于一格0上,那么你可以移动到相邻44格中的某一格11上,同样若你位于一格1上,那么你可以移动到相邻44格中的某一格00上 ...

  5. 在Visual Studio代码中使用Flask

    Flask是一个用于Web应用程序的轻量级Python框架,它提供了URL路由和页面呈现的基础知识. Flask被称为“微”框架,因为它不直接提供表单验证,数据库抽象,身份验证等功能.这些功能由称为F ...

  6. Java开发人员必须掌握的Linux命令(三)

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 学习应该是快乐的,在这个乐园中我努力让自己能用简洁易懂(搞笑有趣)的表达来讲解知识或者技术,让学习之旅充满乐趣,这就是写博 ...

  7. android 按钮特效 波纹 Android button effects ripple

    android 按钮特效 波纹 Android button effects ripple 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E- ...

  8. Python图形编程探索系列-01-初级任务

    设计任务 设计一个主窗口,在其中添加三个标签和三个按钮,当点击按钮时,对标签的内容和色彩进行修改. 代码初步设计 import tkinter as tk root = tk.Tk() def f1( ...

  9. struts2中的session、request 、和action往页面中传值的方法

    ActionContext.getContext().put("list", list); ActionContext.getContext().getValueStack().p ...

  10. linux 配置sendmail支持php mail 函数

    参考自:http://blog.csdn.net/shiningstarpxx/article/details/41008325 http://blog.sina.com.cn/s/blog_65c8 ...