我想比较模板中的两个值,因此我使用了下面给出的把手助手:
Handlebars.registerHelper('ifCond', function(v1, v2, options) {
console.log(v1);console.log(v2);
if(v1 === v2) {
return options.fn(this);
}
return options.inverse(this);
});
我的模板代码:
{{#ifCond item.id 1}}
<div class="row" style="margin-top:0px;">
{{else}}
<div class="row" style="margin-top:5px;">
{{/ifCond}}
但是item.id
的值没有传递给帮助者,它将其值显示为“item.id”。
有谁能告诉我上面代码中的错误是什么?
答案 0 :(得分:2)
我不建议使用if语句在标记之间进行更改。我自己做了,这是一个脆弱的方法,不是很简洁。我总是会尝试使用帮助器{{bind-attr}}
(帮助器在rc7及以下版本中称为{{bindAttr}}。)
<强> CSS:强>
row.margin-top{
margin-top: 5px;
}
<强>模板:强>
<div class="row" {{bindAttr class="item.isWithMargin:margin-top"}}>
这不是最优雅的方法,因为你的模型中会有css特定的逻辑。 因此,你可以迭代你的项目,并为每个项目分配一个itemController,并将逻辑放在这个控制器中。
{{#each item in controller itemController="yourItemController"}}
<!-- this would resolve to App.YourItemController -->
App.YourItemController = Ember.ObjectController({
isWithMargin : function(){
return this.get("model.id") == 1;
}.property("model.id")
});