zoukankan      html  css  js  c++  java
  • 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}}  
    
  • 相关阅读:
    java 抽象工厂模式简单实例
    java 工厂方法模式简单实例
    java 简单工厂模式实现
    tomcat管理页面上如何查看工程下的文件
    如何用Ecplise部署Web项目到tomcat中
    Servlet中操作文件
    ServletContext是什么
    model1模式变为mv模式,实现业务逻辑和画面的分离
    jdbc操作工具类
    Cookie技术随笔
  • 原文地址:https://www.cnblogs.com/zhuiluoyu/p/4843680.html
Copyright © 2011-2022 走看看