Handlebarsカスタムデータフォーマット、データ演算
2353 ワード
ステップ1:
プラグインの参照 handlebars.min.js
ステップ2:
定義テンプレート
プラグインの参照 handlebars.min.js
ステップ2:
定義テンプレート
<tr data-id="{{id}}">
<td width="120px">{{computeAdd udf1 udf2 udf3 udf4}}</td>
<td width="80px">{{prettifyDate createdTime "YYYY-MM-DD"}}</td>
<td></td>
</tr>
カスタムを設定:Handlebars.registerHelper({
'prettifyDate' : function(timestamp) {//
var format = 'YYYY-MM-DD';
if(arguments.length > 2){
format = arguments[1];
}
if(timestamp){
return moment(new Date(timestamp)).format(format);
} else {
return '';
}
},// ''
'prettifyNumber': function(number) {
var format = '0.00', zero = true;
if(arguments.length > 2){
format = arguments[1];
}
if(arguments.length > 3){
zero = arguments[2];
}
return (zero ? number!=null : !!number) ? numeral(number).format(format):'';
},//
'prettifyStr': function(s) {
return s && s.replace(/\s/g, " " ); ;
},// 0
'prettifyPositive': function(number) {
var format = '0.00', zero = true;
if(arguments.length > 2){
format = arguments[1];
}
if(arguments.length > 3){
zero = arguments[2];
}
return (zero ? number!=null&&number>0 : !!number) ? numeral(number).format(format) : '0';
},//
'subtract': function(number1, number2) {
var format = '0.00';
if(arguments.length > 3){
format = arguments[2];
}
var number = number1 - number2;
return number ? numeral(number).format(format) : '';
},//
'computeAdd': function() {
var big = 0;
try{
var len = arguments.length - 1;
for(var i = 0; i < len; i++){
if(arguments[i]){
big = eval(big +"+"+ arguments[i]);
}
}
}catch(e){
throw new Error('Handlerbars Helper "computeAdd" can not deal with wrong expression:'+arguments);
}
return big;
}
});
ステップ3:テンプレートを呼び出す://obj pojo
var source = $("#custom-template").html();
var template = Handlebars.compile(source);
var html = template(obj);
円満に完成する