handlebars  Helper用法:  http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471357.html

逻辑运算符在handlebars.js { { } } #如果条件: http://www.ophome.cn/question/5732

Handlebars.registerHelper('ifCond', function(v1, v2, options) {
if(v1 === v2) {
return options.fn(this);
}
return options.inverse(this);
}); 在模板中调用helper {{#ifCond v1 v2}}
{{v1}} is equal to {{v2}}
{{else}}
{{v1}} is not equal to {{v2}}
{{/ifCond}}
Handlebars.registerHelper("ifCond",function(v1,operator,v2,options) {
switch (operator)
{
case "==":
return (v1==v2)?options.fn(this):options.inverse(this); case "!=":
return (v1!=v2)?options.fn(this):options.inverse(this); case "===":
return (v1===v2)?options.fn(this):options.inverse(this); case "!==":
return (v1!==v2)?options.fn(this):options.inverse(this); case "&&":
return (v1&&v2)?options.fn(this):options.inverse(this); case "||":
return (v1||v2)?options.fn(this):options.inverse(this); case "<":
return (v1<v2)?options.fn(this):options.inverse(this); case "<=":
return (v1<=v2)?options.fn(this):options.inverse(this); case ">":
return (v1>v2)?options.fn(this):options.inverse(this); case ">=":
return (v1>=v2)?options.fn(this):options.inverse(this); default:
return eval(""+v1+operator+v2)?options.fn(this):options.inverse(this);
}
});

eq:

Handlebars.registerHelper( "compare", function( v1, op, v2, options ) {

var c = {
"eq": function( v1, v2 ) {
return v1 == v2;
},
"neq": function( v1, v2 ) {
return v1 != v2;
},
...
} if( Object.prototype.hasOwnProperty.call( c, op ) ) {
return c[ op ].call( this, v1, v2 ) ? options.fn( this ) : options.inverse( this );
}
return options.inverse( this );
} ); {{#compare numberone "eq" numbretwo}}
do something
{{else}}
do something else
{{/compare}}
var d = {
user_name: data.user_name,
credentials_number: data.credentials_number,
credentials_type: credentialsType2,
user_address: data.user_address,
user_birth_str: data.user_birth_str,
user_gender: data.user_gender,
};
var tp = Handlebars.compile($("#user_tpl").html());
Handlebars.registerHelper("compare",function(v1,v2,options){
if(v1==v2)
{
//满足添加继续执行
return options.fn(this);
}
else
{
//不满足条件执行else部分
return options.inverse(this);
}
});
Handlebars.registerHelper("transformat",function(value){
if(value==1)
{
return "男";
}
else if(value==2)
{
return "女";
}
else
{
return "未设置";
}
});
$("#user_content").html(tp(d));
{{#compare user_gender 1}}
<span>男</span><input name="user_gender" id="user_gender" value="1" checked="checked" type="radio">
{{else}}
<span>男</span><input name="user_gender" id="user_gender" value="1" type="radio">
{{/compare}} {{#compare user_gender 2}}
<span>女</span><input name="user_gender" id="user_gender" value="2" checked="checked" type="radio">
{{else}}
<span>女</span><input name="user_gender" id="user_gender" value="2" type="radio">
{{/compare}}

Handlebars的模板标签中,{{#if condition}}{{/if}}只能判断这个condition是否为true和false,并不能判断是否等于某个特定的值。

我们可以借助Handlebars的registerHelper方法来实现。

例子:

我取得的数据有个字段status,这个字段可能是0,1,2  当等于0时要再页面上显示 ‘可用’ ,当等于1时,在页面上显示‘不可用’,当等于2时页面显示‘保留’,其他情况下显示‘unknow’.

下面是在js里面的registerHelper的代码:

    var template = Handlebars.compile(source);  //source是html模板文件 这边就省略了
var data = {status : 0};
Handlebars.registerHelper(‘state’,function() { //这边的state是等下要用在模板文件里面的
if(data.status == 0){
return ‘可用’;
}else if(data.status == 1){
return ‘不可用’;
}else if(data.status == 2){
return ‘保留’;
}else{
return ‘Unknow’;
} });
$(“#yourDom”).html(template(data));
当前状态:{{state}}

handlebars Helper用法的更多相关文章

  1. js模版引擎handlebars.js实用教程——另一种Helper用法

    返回目录 <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content=" ...

  2. js模板引擎之 Handlebars 基本用法

    模板引擎比较久远的一个技术,常见的模板引擎有 baiduTemplate(百度)\artTemplate(腾讯)\juicer(淘宝)\doT\ tmpl\ handlebars\ easyTempl ...

  3. 关于模板引擎handlebars.js基本用法

    说明:模板引擎主要针对于渲染DOM,取代了字符串拼接,用下面的代码亲测handlebars模板引擎比字符串拼接渲染DOM慢了20ms, 这里配置一个在线DEMO,简单说明下handlebars.js的 ...

  4. js模版引擎handlebars.js实用教程——目录

    写在开头的话: 阅读本文需要了解基本的Handlebars.js概念,本文并不是Handlebars.js基础教程,而是注重于实际应用,为读者阐述使用过程中可能会遇到的一些问题. 实际上,小菜写这篇文 ...

  5. js模版引擎handlebars.js实用教程

    js模版引擎handlebars.js实用教程 阅读本文需要了解基本的Handlebars.js概念,本文并不是Handlebars.js基础教程,而是注重于实际应用,为读者阐述使用过程中可能会遇到的 ...

  6. 使用jQuery+huandlebars判断类型的helper

    兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ...

  7. Handlebars块级Helpers

    1.Handlebars简单介绍: Handlebars是JavaScript一个语义模板库,通过对view和data的分离来快速构建Web模板.它采用"Logic-less templat ...

  8. js模版引擎handlebars.js实用教程——循环中使用索引

    <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content="text/ ...

  9. handlebars.js基础学习笔记

    最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...

随机推荐

  1. PHP is_callable 方法

    is_callable (PHP 4 >= 4.0.6, PHP 5) is_callable — 验证变量的内容是否能够进行函数调用 Description bool is_callable  ...

  2. jquery判断元素的子元素是否存在

    jquery判断元素的子元素是否存在的示例代码. jquery判断子元素是否存在 一.判断子元素是否存在 //一级子元素 if($("#specialId>img").len ...

  3. gdb前端: VIM+Pyclewn 调试C/C++

    (gdb) mapkeys C-B : break "${fname}":${lnum} # set breakpoint at current line C-D : down C ...

  4. 在CentOS上安装部署MooseFS分布式文件系统

    参考资料: http://www.moosefs.org/tl_files/manpageszip/moosefs-step-by-step-tutorial-cn-v.1.1.pdf 环境介绍:OS ...

  5. 深入理解Spark 2.1 Core (十一):Shuffle Reduce 端的原理与源代码分析

    http://blog.csdn.net/u011239443/article/details/56843264 在<深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理 ...

  6. svn lock 锁定文件

    [root@NGINX-APACHE-SVN pro]# svn lock zh_CN.UTF-8 'zh_CN.UTF-8' locked by user 'svnroot'. [root@NGIN ...

  7. CLoadScene类

    #ifndef __LOADSCENE_H__ #define __LOADSCENE_H__ #include "GameFrameHead.h" class CGameScen ...

  8. Spring3的表达式语言

    Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言, 能在运行时构建复杂表达式.存取对象图属性. ...

  9. js基本知识6

    1.2 复习 1. 节点 网页是有很多的节点组成的 . 元素节点 指的是 : 标签 li span 文本节点 属性节点 父子兄弟 父 parentNode nextSibling 孩子 childNo ...

  10. 关于浏览器对静态HTML页面的缓存问题

    症状: 刚才为了测试TOMCAT的BASIC安全验证,修改了tomcat-users.xml和/WEB-INF/web.xml之后进行测试,<url-pattern>/*<url-p ...