目前,我正在学习Ember,同时,我还在学习todomvc教程,其中包含了http://thetechcofounder.com/getting-started-with-ember-js-using-ember-cli/ -cli:
我所在的部分中,为了编辑待办事项,需要将editTodo操作添加到TodoController中。到目前为止还不错,但是它还说要在each车把上使用each助手,告诉每个人使用一个特定的控制器。

。
问题是,当我在模板中将itemController添加到each (使用Emblem.js:each itemController='todo')时,模板不再呈现集合中每个项的标题,它只将它们呈现为空白:

我不明白为什么会这样。
模板提取
section#main
ul#todo-list
each
li class={isCompleted:completed}
if isEditing
input.edit
else
= input class='toggle' type='checkbox' checked=isCompleted
label{action 'editTodo' on='doubleClick'}= title
button.destroy
input#toggle-all type='checkbox'控制器提取
`import Ember from 'ember'`
TodoController = Ember.Controller.extend
actions:
editTodo: ->
@set 'isEditing', true
`export default TodoController`发布于 2014-09-28 06:39:29
项目控制器必须是Ember.ObjectController才能成功地呈现每个项及其关联数据。ObjectControllers用于装饰ArrayController中的各个项目。使用'TodosListController‘ArrayController中的TodosListController属性声明项控制器:
itemController: 'todo',然后,在创建参考教程中建议的“todo”项控制器类定义时,请注意,Ember CLI 'generate controller‘命令将创建一个标准的Ember Controller。标准控制器和ArrayControllers表示多个项(如'TodosController‘或'TodosListController')。因此,TodoController应该扩展Ember.ObjectController以表示单数项:
`import Ember from 'ember'`
TodoController = Ember.ObjectController.extend
actions:
editTodo: ->
@set 'isEditing', true
`export default TodoController`与问题一起发布的标准Ember.Controller在通过“每个”助手传递时未能正确显示每个待办事项,因为标准控制器的模型引用的是一组经过过滤的“todo”类型的记录,而不是一个特定的单一待办事项记录。
我创建了一个JS Bin来说明--只需在使用Ember.Controller和使用Ember.ObjectController进行“TodoController”之间切换,就可以看到标准控制器失败了。
此外,问题的原因不是问题的原因,而是为了防止它被忽略,列表项类属性声明中缺少了“isEditing:editing”:
section#main
ul#todo-list
each itemController='todo'
li class={isCompleted:completed, isEditing:editing} // <-- here
if ...https://stackoverflow.com/questions/26007998
复制相似问题