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
    ,我现在已经这样做了,并且还为我的模型设置了一个对象控制器,但仍然得到相同的错误。看起来它没有接上我的控制器?