Javascript EmberJS-断言失败:每个循环所覆盖的值必须是一个数组。您通过了(生成的应用程序控制器)
我正在努力将模型的夹具数据渲染到我的模板中,当我尝试在模板中执行每个循环时,我收到了上述错误:Javascript EmberJS-断言失败:每个循环所覆盖的值必须是一个数组。您通过了(生成的应用程序控制器),javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我正在努力将模型的夹具数据渲染到我的模板中,当我尝试在模板中执行每个循环时,我收到了上述错误: {{#each}} {{title}} {{/each}} 我已将路由器设置为: Application.Router.map(function() { this.resource('application', { path: '/' }); }); Application.ApplicationRoute = Ember.Route.extend({ model: fun
{{#each}}
{{title}}
{{/each}}
我已将路由器设置为:
Application.Router.map(function() {
this.resource('application', { path: '/' });
});
Application.ApplicationRoute = Ember.Route.extend({
model: function() {
return this.store.find('applicationmodel');
}
});
我的模型是这样设置的:
Application.ApplicationModel = DS.Model.extend({
title: DS.attr('string')
});
Application.ApplicationModel.FIXTURES = [
{
id: 1,
title: 'title-1'
},
{
id: 2,
title: 'title-2'
}
];
Application.Application = DS.Model.extend({
title: DS.attr('string')
});
Application.Application.FIXTURES = [
{
id: 1,
title: 'title-1'
},
{
id: 2,
title: 'title-2'
}
];
谁能告诉我我做错了什么
谢谢试试这个:
{{#each content}}
{{title}}
{{/each}}
及
编辑:根据@Andy Hayden在评论中的要求进行详细说明:
错误(EmberJS-Assertion失败:每个循环所经过的值必须是一个数组。您传递的(生成的应用程序控制器)
)为我们提供了两条线索:
内容属性进行循环。因此,看起来我们没有设置ArrayController
,我们正在处理ObjectController
。您可以使用
生成的应用程序控制器
),我们可以看到实际上发生了什么。Ember不知道我们是要表示单个对象还是数组,所以它为我们生成了一个ObjectController
。如果我们明确定义类型为ArrayController
的ApplicationController
,Ember将使用我们的控制器,而不是自己生成一个Application.ApplicationModel = DS.Model.extend({
title: DS.attr('string')
});
Application.ApplicationModel.FIXTURES = [
{
id: 1,
title: 'title-1'
},
{
id: 2,
title: 'title-2'
}
];
Application.Application = DS.Model.extend({
title: DS.attr('string')
});
Application.Application.FIXTURES = [
{
id: 1,
title: 'title-1'
},
{
id: 2,
title: 'title-2'
}
];
尝试进行上述更改。具体来说,从名称中删除“model”,并确保装置前没有空格
{{#each app in model}}
{{app.title}}
{{/each}}
然后使用
model
,因为它是您要迭代的模型属性。出现此错误是因为模板循环通过的控制器不可枚举-由于您没有明确定义,Ember正在自动为您生成ApplicationController
只需声明一个ApplicationController
,如下所示:
App.ApplicationController=Ember.ArrayController.extend()
您找到这个问题的答案了吗?您正在使用Ember AppKit吗?如果是这样的话,我只是遇到了这个问题(这就是我如何在so上结束的),它最终成为了一个文件命名问题
例如,在我们的其他(非EAK)余烬应用程序中,我通常会将PostsController
放在名为posts\u controller.js
的文件中。艾克似乎不喜欢这样;它希望您将它放在posts.js
中,如果找不到它,它将不会返回ArrayController,因此模板没有任何内容需要{{each}
我和我的同事都被我们(不同的)EAK应用程序中的这个问题所困扰。我们发现控制台日志正在报告一个生成的控制器,而我们预期它正在加载我们指定的控制器。如果其他答案都没有帮助,您可能键入了模板名称或
手柄的属性
检查index.html
并确保
标记具有attibute数据模板name=“application”
应该是这样的:
<script type="text/x-handlebars" data-template-name="application">
这样做会删除错误并呈现模板,但是它不会在标题中循环,ember inspector也认为模型中没有记录,这可能是问题吗?哎呀,应该是applicationModel
而不是application
。我更新了我的答案。你能试试吗?如果它不起作用,就建立一个jsBin?你已经试过了,建立了一个jsBin。有趣的是,它在JSBin上工作,但错误发生在我的本地机器上。也许这就是我的问题的关键??这很奇怪。是完全相同的代码吗?您是否在本地机器上使用相同的余烬版本?如果您能说出为什么您认为尝试此方法可以解决此问题,那就太好了。这对我来说不是,这个答案根本无法解释为什么会这样。同样,错误已经消失,但我没有得到任何输出。余烬检查员是否应该显示我的模型中有固定装置的记录?是的,应该。我已经编辑了我的回复。试试看它是否管用。哎呀,忘记了每个帮助程序中的。它对我管用,你没有定义适配器吗?此外,当查询商店时,它应该是applicationModel
,我现在已经这样做了,并且还为我的模型设置了一个对象控制器,但仍然得到相同的错误。看起来它没有接上我的控制器?