Javascript 断言失败:每个循环所覆盖的值必须是数组错误。我做错了什么?
我正在学习Ember的TodoMVC教程,我被卡住了。基本上,我定义了两个控制器。这是todos.jsJavascript 断言失败:每个循环所覆盖的值必须是数组错误。我做错了什么?,javascript,arrays,ember.js,todomvc,Javascript,Arrays,Ember.js,Todomvc,我正在学习Ember的TodoMVC教程,我被卡住了。基本上,我定义了两个控制器。这是todos.js import Ember from "ember"; export default Ember.ArrayController.extend({ actions:{ createTodo: function(){ var title = this.get("newTitle"); if(!title){
import Ember from "ember";
export default Ember.ArrayController.extend({
actions:{
createTodo: function(){
var title = this.get("newTitle");
if(!title){
return false;
}
if(!title.trim()){
return;
}
var todo = this.store.createRecord("todo", {
title: title,
isCompleted: false
});
// Clear text field
this.set('newTitle', '');
todo.save();
}
}
})
这是todo.js
import Ember from "ember"
export default Ember.ObjectController.extend({
isCompleted: function(key, value){
var model = this.get("model");
if(value === undefined){
return model.get("isCompleted");
} else {
model.set('isCompleted', value);
model.save();
return value;
}
}.property('model','model.isCompleted')
});
这里是routes/todos.js
import Ember from "ember";
export default Ember.Route.extend({
model: function() {
return this.store.find("todo");
}
});
最后,还定义了todos.hbs
<ul id="todo-list">
{{#each todo in model itemController="todo"}}
<li {{bind-attr class="todo.isCompleted:completed"}}>
{{input
type="checkbox"
class="toggle"
checked=todo.isCompleted
}}
<label>{{todo.title}}</label><button class="destroy"></button>
</li>
{{/each}}
</ul>
{{{#模型itemController=“todo”}中的每个todo
-
{{输入
type=“复选框”
class=“切换”
选中=todo.isCompleted
}}
{{todo.title}
{{/每个}}
一切看起来都很好,但控制台中出现以下错误:
未捕获错误:断言失败:每个循环必须覆盖的值
是一个数组。你通过了TOMVC考试-embercli@controller:数组:,但它
应该是ArrayController
我做错了什么?在Ember GitHub页面上。这似乎是一个错误与余烬,我不知道有一个解决办法。但是,它确实提到可以使用组件而不是数组和项控制器(这是首选方法)。也许你可以看看这期杂志上的帖子
如果找到解决方法/修复,我会回来更新此答案。现在,我想说的是尽量避免使用阵列控制器(即使教程中有)/ 根据,从package.json中删除ember disable proxy controllers似乎可以解决这个问题。您可以发布您的
todos
路线吗?todos.js路线发布:)我没有看到任何明显的错误。你是偶然发现的吗?我刚刚在config/environment.js中添加了以下内容:EmberENV:{FEATURES:{EXTEND_prototype:true}}。同样的结果。以下是完整的environment.js文件:出于好奇,您是否可以尝试更改控制器,使其从控制器扩展到阵列控制器
?另外,您是否介意发布您正在使用的Ember版本?好吧,偶尔知道这是框架的错,而不是您的错,这很好:)