错误:Ember.CollectionView的内容必须实现Ember.Array。

时间:2013-08-01 01:55:47

标签: ember.js render

我想用渲染助手渲染一个模板。该页面出错:

  

Ember.CollectionView的内容必须实现Ember.Array

http://jsbin.com/ikituj/62/edit

1 个答案:

答案 0 :(得分:1)

渲染助手

首先,一个小的改变。当您致电{{render "blogcategory" App.BlogCategory}}时,您应该(可选)将BlogCategory模型的实例作为第二个参数传递给render,而不是 。有关render helper

的更多信息,请参阅

错误

因此,将该行更改为{{render "blogcategory"}},我们仍然会收到错误:

Uncaught Error: assertion failed: an Ember.CollectionView's content must implement     Ember.Array. You passed <(generated blogcategory controller):ember326> 

为什么会这样?

这是因为Ember没有接受你的BlogCategoryController。看看错误说明你传递的是(generated blogcategory controller)?这意味着Ember已自动生成一个控制器 - 您定义的BlogCategoryController(扩展ArrayController 实现{{1} }})。

按照约定在博客模板中调用Ember.Array时,Ember会查找名为{{render 'blogcategory'}}的视图和名为Blogcategory的控制器。请注意大写 - Ember不知道何时为您的课程资本化!因为它找不到它,它会自动生成一个ObjectController,然后当你尝试在blogcategory模板中使用BlogcategoryController进行迭代时它就会抱怨。

修复

解决方案是更改渲染调用或控制器名称以使它们匹配。我将调用更改为{{#each}},因为您的控制器名称(BlogCategoryController)已遵循约定。

  1. 我将render更改为{{render 'blogcategory'}}
  2. 我将{{render 'blogCategory'}}模板上的ID更改为blogcategory
  3. 见这里: http://jsbin.com/ikituj/66/edit