javascript - 渲染多个 View / Controller 对

标签 javascript list view controller ember.js

我当前正在渲染 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/

相关文章:

list - 在列表中找到倒数第二个项目,请解释此解决方案

android - 在 main.xml 之上添加 onDraw 可绘制对象

javascript - 如何优化此 HTML 以在浏览器中更快地呈现?

javascript - JS : The Good Parts: The `superior` function

javascript - 使用 jquery 获取具有多个复选框的复选框值之一

c# - LINQ 分组依据列表<>

Python For 循环(迭代变量名 = 列表名)

swift - 仅在 subview 中双击识别(不是主视图)

Android:来自 xml 布局的自定义 View

javascript - 如何使用 JavaScript 创建文件?