我使用Ember with Handlebars模板
如何在Handlebars中获得以下支持?
{{#if response.someCount> 0}}
我是否必须在Controller中添加一些映射属性才能实现此目的?
答案 0 :(得分:0)
你需要帮助,例如:
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);
}
});
然后在你的模板中:
{{#compare response.someCount 0 operator = ">"}}
// Some code...
{{/compare}}
很抱歉我不记得我在哪里编写了这个代码,但它在一个项目中运行了一年多的完美。