Ember Router记录错误:"Ember.CollectionView的内容必须实现Ember.Array"

Chr*_*let 6 javascript client-side ember.js

这里有一个相当直接的Ember问题,(我希望!).

我有一个简单的Ember数据设置.一个应用程序有许多版本.这是我的App模型:

App.App = DS.Model.extend({
  name: DS.attr('string'),
  publicKey: DS.attr('string'),
  versions: DS.hasMany('App.Version', { key: 'version_ids' })
});
Run Code Online (Sandbox Code Playgroud)

我的路由器很简单:

App.Router = Ember.Router.extend({
  location: 'hash',
  root: Ember.Route.extend({
    index: Ember.Route.extend({
      route: '/',
      redirectsTo: 'dashboard'
    }),
    dashboard: ...,
    app: Ember.Route.extend({
      route: '/:app_id',
      connectOutlets: function(router, app) {
        router.get('applicationController').connectOutlet('appTest', app);
      },

      index: Ember.Route.extend({
        route: '/',
        connectOutlets: function(router) {
          appTestController = router.get('appTestController');
          appTestController.connectOutlet('addCommentOutlet', 'addComment', {});
          appTestController.connectOutlet('versions', appTestController.get('content.versions'));
        }
      })
    })
  })
});
Run Code Online (Sandbox Code Playgroud)

视图和控制器看起来像这样:

App.AppTestView = Ember.View.extend({
  templateName: 'app_test'
});

App.VersionsView = Ember.View.extend({
  templateName: 'versions'
});

App.AppTestController = Ember.ObjectController.extend({
});

App.VersionsController = Ember.ArrayController.extend({
});
Run Code Online (Sandbox Code Playgroud)

当我运行它时不幸的是我得到了错误:an Ember.CollectionView's content must implement Ember.Array. You passed <App.Version:ember519>.

有趣的是,如果我[appTestController.get('content.versions')]在路由器中添加括号,它就不会抱怨并正确地创建第一个Version对象的数组.但它似乎不想显示多个对象.

有小费吗?

Chr*_*let 11

最后,它不是模型,视图对象或控制器!它甚至不是路由器.

是的versions.handlebars.我在模板中的循环中有一个循环,如下所示:

{{#each version in controller}}
  Version here
  {{#each comment in version}}
    {{comment.text}}
  {{/each}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)

我写错了:

each comment in version
Run Code Online (Sandbox Code Playgroud)

......我打算写的:

each comment in version.comments
Run Code Online (Sandbox Code Playgroud)

:)这解释了错误消息.希望这有助于其他人!