渲染多个视图/控制器对

时间:2013-03-29 11:17:26

标签: javascript list view controller ember.js

我目前正在呈现一系列观点:

  <ul>
    {{#each newsItem in controller}}
      {{view App.NewsItemView contentBinding="newsItem" class="news-item" }}
    {{/each}}
  </ul>

但我想在每个视图中注入一个NewsItemController。

我尝试过使用render,但这似乎只支持单个视图,但却有例外:

  

未捕获错误:把手错误:找不到属性'control'   对象。

我已经发现了使用control的简短提及,但似乎不再包含此内容。

那么如何渲染同一视图的多个版本,为每个版本注入一个单独的控制器?

1 个答案:

答案 0 :(得分:1)

{{render}}应该在当前的master中修复(如果你从Github构建它)。如果传递模型,您应该可以多次使用它:

<ul>
 {{#each controller}}
   {{render "newsItem" this}}
 {{/each}}
</ul>

{{control}}仍然存在,但隐藏在旗帜后面(因为它仍然是实验性的)。要使用它,您需要在包含ENV.EXPERIMENTAL_CONTROL_HELPER = true文件之前执行:ember.js。如果你可以避免使用它,那就更好了。

但我认为最简单的方法是使用itemController

<ul>
  {{#each controller itemController="newsItem"}}
    {{view App.NewsItemView class="news-item" }}
  {{/each}}
</ul>

我认为你可以将它们组合起来以使其更简单(我还没有尝试过):

<ul>
  {{each controller itemController="newsItem" itemViewClass="App.NewsItemView"}}
</ul>