如何在每个中设置itemController(ember 1.11 beta3)?

时间:2015-02-25 09:39:10

标签: javascript ember.js handlebars.js each

我想尝试使用:

{{#each content as |product index|}}
  {{index}}
{{/each}}

但是我的app有itemContoller,就像这样:

{{#each product in content itemController='product'}}

如果我这样设置:

{{#each content as |product index| itemController='product'}}

它不起作用!我找到了所有的余烬指南而没有找到答案。

请帮助。

3 个答案:

答案 0 :(得分:7)

控制器(ObjectArrayitemController)正在消失。新方法是使用组件。

因此,您将定义一个组件:

,而不是您的项目控制器
App.MyProductComponent = Ember.Component.extend({
  myIndex: function(){
    return this.get('passedIndex') + 1;
  }.property('passedIndex')
});

然后,在#each帮助器中,您将按如下方式使用它:

<script type="text/x-handlebars" data-template-name="index">
  <ul>
    {{#each model as |product index|}}
      {{ my-product passedIndex=index product=product }}
    {{/each}}
  </ul>
</script>

工作解决方案here

请参阅以下链接,然后搜索itemController - https://github.com/emberjs/rfcs/pull/15

答案 1 :(得分:0)

真的?我的意思是,在很多情况下我认为根据控制器模型的属性创建一个显示计算值的组件会有点过分.....如果我只想要一个字符串怎么办? (我不需要为每个组件添加由ember添加的<div>。)

然后创建帮手?哇。

答案 2 :(得分:0)

@ user3443096,

如果您不想通过ember使用tagName: ""属性插入div标签,请执行以下操作:

App.InvoiceItemsComponent = Ember.Component.extend({
tagName: '' 
});

现在,不会插入组件周围的div。