Ember cli 断言失败:ArrayProxy需要一个数组或Ember.ArrayProxy,但您传递了一个对象

Ember cli 断言失败:ArrayProxy需要一个数组或Ember.ArrayProxy,但您传递了一个对象,ember-cli,Ember Cli,这是我的密码 /******************************************************/ import Ember from "ember"; var TodosController = Ember.ArrayController.extend({ actions: { createTodo: function(){ // Get the todo title by the "New Todo" input var title = this

这是我的密码

/******************************************************/

import Ember from "ember";

var TodosController = Ember.ArrayController.extend({

actions: {

createTodo: function(){

  // Get the todo title by the "New Todo" input 
  var title = this.get('newTitle');
  if(!title.trim()){ return; }

  // Create the new Todo model
  var todo = this.store.createRecord('todo', {
    title: title,
    isCompleted: false
  });

  // Clear the 'New Todo' input field
  this.set('newTitle', '');

  // Save the new model
  todo.save();
},

clearCompleted: function(){
  var completed = this.filterBy('isCompleted', true);
  completed.invoke('deleteRecord');
  completed.invoke('save');
}
},

remaining: function() {
return this.filterBy('isCompleted', false).get('length');
}.property('@each.isCompleted'),

inflection: function() {
var remaining = this.get('remaining');
return remaining === 1 ? 'todo' : 'todos';
}.property('remaining'),

hasCompleted: function(){
return this.get('completed') > 0;
}.property('completed'),

completed: function(){
return this.filterBy('isCompleted', true).get('length');
}.property('@each.isCompleted'),

allAreDone: function(key, value) {
if(value === undefined){
  return !!this.get('length') && this.everyProperty('isCompleted', true);
} else {
  this.setEach('isCompleted', value);
  this.invoke('save');
  return value;
}

}.property('@each.isCompleted')

});
export default TodosController;
/*******************************************************/

import Ember from "ember";

var TodosController = Ember.ArrayController.extend({

actions: {

createTodo: function(){

  // Get the todo title by the "New Todo" input 
  var title = this.get('newTitle');
  if(!title.trim()){ return; }

  // Create the new Todo model
  var todo = this.store.createRecord('todo', {
    title: title,
    isCompleted: false
  });

  // Clear the 'New Todo' input field
  this.set('newTitle', '');

  // Save the new model
  todo.save();
},

clearCompleted: function(){
  var completed = this.filterBy('isCompleted', true);
  completed.invoke('deleteRecord');
  completed.invoke('save');
}
},

remaining: function() {
return this.filterBy('isCompleted', false).get('length');
}.property('@each.isCompleted'),

inflection: function() {
var remaining = this.get('remaining');
return remaining === 1 ? 'todo' : 'todos';
}.property('remaining'),

hasCompleted: function(){
return this.get('completed') > 0;
}.property('completed'),

completed: function(){
return this.filterBy('isCompleted', true).get('length');
}.property('@each.isCompleted'),

allAreDone: function(key, value) {
if(value === undefined){
  return !!this.get('length') && this.everyProperty('isCompleted', true);
} else {
  this.setEach('isCompleted', value);
  this.invoke('save');
  return value;
}

}.property('@each.isCompleted')

});
export default TodosController;
在终端中运行此命令时未显示任何错误

$ember服务器

但在浏览器中不显示任何内容,而在控制台中显示此错误

未捕获错误:断言失败:ArrayProxy需要一个数组或 Ember.ArrayProxy,但您传递了对象

请告诉我我做错了什么,代码也在github上:


提前感谢。

最可能的原因是您有一个从
Ember.ArrayController
扩展的控制器,而您只返回相应模型中的普通对象。
我也遇到了同样的问题,并将控制器改为扩展
Ember.controller

在该控制器的相关路径中,您的
model
方法不会返回数组,正如您扩展arrayController所示

你从哪里得到这个错误的?你的问题不够具体,代码太多,我也遇到了同样的错误(不同的项目)。似乎没有数据传入。。。