Joe*_*lor 3 javascript ember.js ember-data
我正在努力让我的模型的夹具数据渲染到我的模板,当我在模板中尝试每个循环时,我收到上面的错误:
{{#each}}
{{title}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
我已经设置了我的路由器:
Application.Router.map(function() {
this.resource('application', { path: '/' });
});
Application.ApplicationRoute = Ember.Route.extend({
model: function() {
return this.store.find('applicationmodel');
}
});
Run Code Online (Sandbox Code Playgroud)
我的模型设置如下:
Application.ApplicationModel = DS.Model.extend({
title: DS.attr('string')
});
Application.ApplicationModel.FIXTURES = [
{
id: 1,
title: 'title-1'
},
{
id: 2,
title: 'title-2'
}
];
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?
谢谢
试试这个:
{{#each content}}
{{title}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
和
App.ApplicationController = Ember.ArrayController.extend({})
Application.ApplicationRoute = Ember.Route.extend({
model: function() {
return this.store.find('applicationModel');
},
setupController: function(controller, model) {
controller.set('content', model);
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:按照@Andy Hayden的评论要求详细说明:
error(EmberJS - Assertion failed: The value that #each loops over must be an Array. You passed (generated application controller)
)为我们提供了两条线索:
我们试图循环的不是数组.从模板中我们可以看到我们循环遍历content
控制器的属性.因此看起来我们没有ArrayController
设置,我们正在处理ObjectController
.您可以使用Ember Inspector确认这一点
控制器来自哪里?如果需要,Ember将自动为我们生成控制器,我们没有明确定义它.事实上,通过查看错误消息(generated application controller
),我们可以看到发生了什么.Ember不知道我们是想要表示单个对象还是数组,因此它ObjectController
为我们生成了一个.如果我们明确定义了一个ApplicationController
类型ArrayController
,Ember将使用我们的控制器而不是自己生成一个.