Если вы передаете более одного аргумента каждому помощнику, он должен быть в форме #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}} форма, я не получаю сообщение об ошибке (за исключением предупреждения об устаревании во второй форме).

1 ответ

Решение

Я только что понял, что я все еще собираю шаблоны, используя Ember.Handlebars.precompile(template);Который я в шоке сработал вообще! Переключение на Ember.HTMLBars.compile(template); исправил проблему. Спасибо за все полезные комментарии, особенно @Kalman - попытка воспроизвести в jsbin привела меня к решению.

Другие вопросы по тегам