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