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