我尝试将以下数据输入 Handlebar 模板
{
"set-group": [
{
"label": "Source Data",
"type": "select",
"options": [
{
"value": "Default Selections"
},
{
"value": "Other Selections"
}
]
},
{
"label": "Scale",
"type": "radio",
"options": [
{
"value": "log",
"label": "Log",
"groupname": "group2"
},
{
"value": "linear",
"label": "Linear",
"groupname": "group2"
}
]
}
]
}
我创建并注册了 2 个部分,一个模板“选择”表单元素,一个模板“单选”输入。我不知道数据中将包含哪种类型的表单元素,因此我需要某种帮助程序来检查 type == select 是否适用于选择并应用适当的部分。我在创建这样的助手时遇到了麻烦。
我正在考虑将数据中的 type=select 替换为 select=true 并使用 if/else 助手检查 true/false,但我宁愿保持格式标准化
有什么想法吗?
最佳答案
我最终使用了这个助手
// Comparison Helper for handlebars.js
// Pass in two values that you want and specify what the operator should be
// e.g. {{#compare val1 val2 operator="=="}}{{/compare}}
Handlebars.registerHelper('compare', function(lvalue, rvalue, options) {
if (arguments.length < 3)
throw new Error("Handlerbars Helper 'compare' needs 2 parameters");
operator = options.hash.operator || "==";
var operators = {
'==': function(l,r) { return l == r; },
'===': function(l,r) { return l === r; },
'!=': function(l,r) { return l != r; },
'<': function(l,r) { return l < r; },
'>': function(l,r) { return l > r; },
'<=': function(l,r) { return l <= r; },
'>=': function(l,r) { return l >= r; },
'typeof': function(l,r) { return typeof l == r; }
}
if (!operators[operator])
throw new Error("Handlerbars Helper 'compare' doesn't know the operator "+operator);
var result = operators[operator](lvalue,rvalue);
if( result ) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
来源:http://doginthehat.com.au/2012/02/comparison-block-helper-for-handlebars-templates/
关于javascript - Handlebars 中的条件部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484977/