如果您将多个参数传递给每个助手,它必须采用 #each foo in bar 的形式

If you pass more than one argument to the each helper, it must be in the form #each foo in bar

我正在使用 Ember 1.10.0、Ember Data beta 14.1 和 Ember LocalStorage Adapter 0.5.1。我有一个模板:

<h1>Dracula's blog</h1>

<ul>
  {{#each post in model}}
    <li>{{#link-to 'post' post}}{{post.title}}{{/link-to}}</li>
  {{/each}}
</ul>

{{#link-to 'new-post' classNames="btn btn-primary"}}New scary post{{/link-to}}

一条路线:

Blogger.PostsRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('post');
  }
});

我依赖 Ember 根据返回的模型数组自动创建 ArrayController。

当我加载路线时,出现错误:

Uncaught Error: Assertion Failed: If you pass more than one argument to the each helper, it must be in the form #each foo in bar

如果我切换到 {{#each model as |post|}}{{#each model}} 形式,我不会收到错误(除了第二种形式的弃用警告)。

我刚刚发现我仍在使用 Ember.Handlebars.precompile(template); 编译模板,这让我感到震惊!切换到 Ember.HTMLBars.compile(template); 解决了这个问题。感谢所有有用的评论,尤其是@Kalman - 尝试在 jsbin 中重现让我找到了解决方案。