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

Posted

技术标签:

【中文标题】如何在每个中将 itemController 设置为(ember 1.11 beta3)?【英文标题】:How to set itemController in each as (ember 1.11 beta3)? 【发布时间】:2015-04-27 05:52:53 【问题描述】:

我想尝试使用:

#each content as |product index|
  index
/each

但是我的应用有 itemContoller,像这样:

#each product in content itemController='product'

如果我设置这个:

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

这行不通!我找到了所有的 ember 指南,但没有找到答案。

请帮忙。

【问题讨论】:

【参考方案1】:

控制器(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

【讨论】:

不要忘记在组件中设置tagName: 'li'。否则,将使用 div,这可能会弄乱您的列表。【参考方案2】:

真的吗?我的意思是,在很多情况下,我认为根据控制器模型的属性创建一个用于显示计算值的组件将是矫枉过正......如果我只想要一个 string (我不需要 ember 为每个组件添加的 &lt;div&gt; 东西)。

然后创建助手?哇。

【讨论】:

【参考方案3】:

@user3443096,

如果您不希望 ember 插入 div 标签,请使用 tagName: "" 属性,如下所示:

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

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

【讨论】:

以上是关于如何在每个中将 itemController 设置为(ember 1.11 beta3)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TabCtrl 内的子对话框中将焦点设置为 CEdit?

如果在配置中将布尔值设置为 true,我如何获得? [关闭]

如何在iPhone中将图像设置为UISegmentedControl?

如何在javascript中将字符串的每个单词的第一个字符大写? [复制]

如何在 JavaScript 中将所有对象属性设置为 null?

在响应式框架中将 LI 设置为 100% 高度