handlebars Helper用法
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用法的更多相关文章
- js模版引擎handlebars.js实用教程——另一种Helper用法
		返回目录 <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content=" ... 
- js模板引擎之 Handlebars  基本用法
		模板引擎比较久远的一个技术,常见的模板引擎有 baiduTemplate(百度)\artTemplate(腾讯)\juicer(淘宝)\doT\ tmpl\ handlebars\ easyTempl ... 
- 关于模板引擎handlebars.js基本用法
		说明:模板引擎主要针对于渲染DOM,取代了字符串拼接,用下面的代码亲测handlebars模板引擎比字符串拼接渲染DOM慢了20ms, 这里配置一个在线DEMO,简单说明下handlebars.js的 ... 
- js模版引擎handlebars.js实用教程——目录
		写在开头的话: 阅读本文需要了解基本的Handlebars.js概念,本文并不是Handlebars.js基础教程,而是注重于实际应用,为读者阐述使用过程中可能会遇到的一些问题. 实际上,小菜写这篇文 ... 
- js模版引擎handlebars.js实用教程
		js模版引擎handlebars.js实用教程 阅读本文需要了解基本的Handlebars.js概念,本文并不是Handlebars.js基础教程,而是注重于实际应用,为读者阐述使用过程中可能会遇到的 ... 
- 使用jQuery+huandlebars判断类型的helper
		兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ... 
- Handlebars块级Helpers
		1.Handlebars简单介绍: Handlebars是JavaScript一个语义模板库,通过对view和data的分离来快速构建Web模板.它采用"Logic-less templat ... 
- js模版引擎handlebars.js实用教程——循环中使用索引
		<!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content="text/ ... 
- handlebars.js基础学习笔记
		最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ... 
随机推荐
- Linux 设置IP,gate, 以及自动获取IP的方法
			一.使用命令设置ubuntu的ip地址 1.修改配置文件blacklist.conf禁用IPV6: sudo vi /etc/modprobe.d/blacklist.conf 2.在文档最后添加 b ... 
- 【Android UI设计与开发】使用ViewPager实现欢迎引导页面
			一.实现的效果图 每次看别人的代码前,必需要先看实现的效果图达到了一个什么样的效果,是不是跟自己想要实现的效果类似.有图才有真相嘛,同一时候,最下方有源代码的下载地址,差点儿源代码的每一行都有凝视,写 ... 
- Informix 配置选项
			下表列出了用于改善数据库性能的附加选项.如果选择在 onconfig 配置文件中进行更改,则需要重新启动 Informix 通用服务器.可以在 Informix 服务器处于联机或脱机状态时编辑 onc ... 
- atitit.判断时间重叠方法总结 java c++ c#.net  js php
			atitit.判断时间重叠方法总结 java c++ c#.net js php 1. 判断时间重叠具体流程思路 1 2. 重叠算法 实际上就是日期集合跟个时间集合的的交集(乘法算法) 1 3. 代 ... 
- dataGridViewX操作
			private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e) { ... 
- 使用c++的cocos2d-x-3.0rc1程序公布apk
			(如今cocos2dx-x-3.0正式版已经出了.之前用的cocos2d-x-3.0rc1,就先用这个版本号吧) 0. 完毕C++项目 在cmd下使用cocos.py new命令,然后习惯性的在win ... 
- Vim-复制选中内容至系统剪贴板,光标移动到指定行的行首和行尾
			1.全选并复制到系统剪贴板 ggVG或ggvG 然后 "+y gg 让光标移到首行,在vim才有效,vi中无效 V 是进入Visual(可视)模式 G 光标移到最后一行 "+y 复 ... 
- JCO 自定义DestinationDataProvider
			要让JAVA程序能访问SAP系统,一般通过SAP JCO接口进行通讯,在获取到SAP的连接时需求提供一些连接参数,这些参数在最新的 JCO 3.0 中需要被保存到一个带有扩展名.jcoDestinat ... 
- 安装CentOS7后,无法联网,用yum安装软件提示 cannot find a valid baseurl for repo:base/7/x86_64 的解决方法
			无法联网的明显表现会有: 1.yum install出现 Error: cannot find a valid baseurl or repo:base 2.ping host会提示unknown h ... 
- ubuntu 15.04
			修改更新源: sudo vim /etc/apt/sources.list 删除里面所有内容 方法1: 按ggdG 方法2: :%d 替换源 搜狐源: deb http://mirrors.sohu. ... 
