Ember.js 未能将值传递给把手辅助对象

Ember.js 未能将值传递给把手辅助对象,ember.js,handlebars.js,Ember.js,Handlebars.js,我想比较模板中的两个值,因此我使用了Handlebar助手,如下所示: 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

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

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}} 
{{{#ifCond item.id 1}
{{else}
{{/ifCond}
item.id
的值并没有传递给它,而是将其值显示为“item.id”


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

我不建议使用if语句在标记之间进行更改。我自己做的,这是一个脆弱的方法,不是很简洁。我总是尝试使用helper
{{bind attr}}
(helper在rc7及以下版本中称为{{bindAttr}})

CSS:

row.margin-top{
  margin-top: 5px;
}
<div class="row" {{bindAttr class="item.isWithMargin:margin-top"}}>
模板:

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")
});
{{{#controller itemController=“yourtitemcontroller”}中的每个项
App.YourItemController=Ember.ObjectController({
isWithMargin:function(){
返回此.get(“model.id”)==1;
}.property(“model.id”)
});

并且输出id与
{{item.id}}
一起工作?我收到以下错误未捕获错误:无法解析itemController:“HomeController”无法找到解决方案。您声明了一个
App.HomeController
?是的,HomeController是此路由的控制器,路由是HomeRoute。请尝试从小写字母开始:“HomeController”我已更正了小提琴并删除了一个级别的{{#each}},我猜它的工作方式可能是您想要的。还有一个提示:永远不要命名控制器
IndexController
。它是余烬中的保留名称。仅当确实要为索引路由显式定义控制器时,才应使用此名称。但在您的情况下,您希望将其用作任意itemController。因此,我将其重新命名。