EmberJS - 断言失败:#each循环的值必须是一个数组.你通过了(生成的应用控制器)

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)

谁能告诉我我做错了什么?

谢谢

cho*_*per 6

试试这个:

{{#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))为我们提供了两条线索:

  1. 我们试图循环的不是数组.从模板中我们可以看到我们循环遍历content控制器的属性.因此看起来我们没有ArrayController设置,我们正在处理ObjectController.您可以使用Ember Inspector确认这一点

  2. 控制器来自哪里?如果需要,Ember将自动为我们生成控制器,我们没有明确定义它.事实上,通过查看错误消息(generated application controller),我们可以看到发生了什么.Ember不知道我们是想要表示单个对象还是数组,因此它ObjectController为我们生成了一个.如果我们明确定义了一个ApplicationController类型ArrayController,Ember将使用我们的控制器而不是自己生成一个.