0

我想比较模板中的两个值,因此我使用了车把助手,如下所示:

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”。

谁能告诉我上面代码中的错误是什么?

4

1 回答 1

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")
});
于 2013-09-02T12:13:26.193 回答