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. 自定义规则,对List<Map<String,Object>> List<Object>进行排序

    package lltse.java.collection; import java.util.ArrayList; import java.util.Collections; import java ...

  2. 我的Android进阶之旅------&gt;Android系统设置默认来电铃声、闹钟铃声、通知铃声

    首先了解Android系统本身提供的默认铃声文件,这些文件都放在  /system/media/audio  文件夹下. /system/media/audio/ringtones   系统来电铃声 ...

  3. 和求余运算巧妙结合的jns指令

    .text:004A78B1  and eax, 80000001h.text:004A78B6  jns short loc_4A78BD.text:004A78B8 dec eax.text:00 ...

  4. poi读取excel元素

    Java读取excel元素 忽略元数据末尾回到原数据开始处 pom文件设置 <dependency><groupId>org.apache.poi</groupId> ...

  5. Windows 2003 IIS 不支持ASP问题的解决方法

    有时候我们在配置iis的时候,为了安全关闭了asp的支持,下面我们来介绍下让iis支持asp的一些注意事项特别注意:当我们在没有配置好iis的时候,不要安装补丁了,组件之类的东西,先把网站弄开通了,再 ...

  6. jquery 获取各种高宽

    获取浏览器显示区域(可视区域)的高度 :   $(window).height();   获取浏览器显示区域(可视区域)的宽度 : $(window).width();   获取页面的文档高度   $ ...

  7. java常用操作

    1.properties文件中文转换 在cmd中进入到文件所在目录执行(其他操作请见命令帮助):native2ascii -reverse  messages_zh_CN.properties b.t ...

  8. Flume Channel Selectors + kafka

    http://flume.apache.org/FlumeUserGuide.html#custom-channel-selector 官方文档上channel selectors 有两种类型: Re ...

  9. C语言 · 复数归一化

     算法提高 复数归一化   时间限制:1.0s   内存限制:512.0MB      编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(a*a+b*b) + i ...

  10. LAMP 环境搭建关键步骤及注意事项

    一.安装MySQL1): 编译安装MySQL+----------------------------------------------------------------------------- ...