-
Notifications
You must be signed in to change notification settings - Fork 0
Handlebars Helper
musishui edited this page Jun 29, 2015
·
1 revision
Handlebars.registerHelper("convertToArray", function (ctx, pattern, options) {
var obj = $.extend({}, ctx);
var keys = pattern.split(".");
var arr = convertToArray(obj, keys, 0);
return options.fn(arr);
});
Handlebars.registerHelper("eq", function (v1, v2, options) {
if (compare(v1, v2) == 0) {
//满足添加继续执行
return options.fn(this);
} else {
//不满足条件执行{{else}}部分
return options.inverse(this);
}
});
Handlebars.registerHelper("gt", function (v1, v2, options) {
if (compare(v1, v2) > 0) {
//满足添加继续执行
return options.fn(this);
} else {
//不满足条件执行{{else}}部分
return options.inverse(this);
}
});
Handlebars.registerHelper("lt", function (v1, v2, options) {
if (compare(v1, v2) < 0) {
//满足添加继续执行
return options.fn(this);
} else {
//不满足条件执行{{else}}部分
return options.inverse(this);
}
});
function convertToArray(obj, keys, level) {
level = level || 0;
var arr = [obj];
var children = [];
obj["_level"] = level
if (keys.length) {
var key = keys.shift();
if (obj[key] && obj[key].length) {
for (var i = 0, l = obj[key].length; i < l; i++) {
if (obj[key][i]) {
var nKeys = $.extend(true, [], keys);
children = children.concat(convertToArray(obj[key][i], nKeys, level + 1));
}
}
}
obj[key] = children.shift();
}
obj["_length"] = children.length + 1;
return arr.concat(children);
}
function compare(v1, v2) {
if (v1 === v2) return 0;
else if (v1 > v2) {
return 1;
} else {
return -1;
}
}