我当前正在渲染 View 列表:
<ul>
{{#each newsItem in controller}}
{{view App.NewsItemView contentBinding="newsItem" class="news-item" }}
{{/each}}
</ul>
但我想在每个 View 中注入(inject)一个 NewsItemController。
我尝试过使用render
,但这似乎只支持单个 View ,但有异常(exception):
Uncaught Error: Handlebars error: Could not find property 'control' on object .
我发现了一个关于使用 control
的简短提及,但这似乎不再包含在内。
那么如何渲染同一 View 的多个版本,并为每个版本注入(inject)一个单独的 Controller ?
最佳答案
{{render}}
应在当前 master 中修复(如果您从 Github 构建它)。如果您传递模型,您应该能够多次使用它:
<ul>
{{#each controller}}
{{render "newsItem" this}}
{{/each}}
</ul>
{{control}}
仍然存在,但隐藏在标志后面(因为它仍处于实验阶段)。要使用它,您需要在包含 ember.js
文件之前执行:ENV.EXPERIMENTAL_CONTROL_HELPER = true
。如果你能避免使用它那就更好了。
但是我认为最简单的方法是使用itemController
:
<ul>
{{#each controller itemController="newsItem"}}
{{view App.NewsItemView class="news-item" }}
{{/each}}
</ul>
我认为你可以将它们结合起来使其更简单(我还没有尝试过):
<ul>
{{each controller itemController="newsItem" itemViewClass="App.NewsItemView"}}
</ul>
关于javascript - 渲染多个 View / Controller 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15702176/