bru*_*077 5 coffeescript ember.js emblem.js
我正在学习Ember,同时遵循ember-cli的todomvc教程:http://thetechcofounder.com/getting-started-with-ember-js-using-ember-cli/
我在编辑待办事项的部分,需要添加editTodo动作TodoController.到目前为止一切都那么好,但它也说要itemController在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'
Run Code Online (Sandbox Code Playgroud)
`import Ember from 'ember'`
TodoController = Ember.Controller.extend
actions:
editTodo: ->
@set 'isEditing', true
`export default TodoController`
Run Code Online (Sandbox Code Playgroud)
项目控制器必须是Ember.ObjectController才能成功呈现每个项目及其关联数据。ObjectController 用于装饰 ArrayController 中的各个项目。使用“TodosListController”ArrayController 中的 itemController 属性来声明项目控制器:
\n\n itemController: \'todo\',\nRun Code Online (Sandbox Code Playgroud)\n\n然后,当按照参考教程中的建议创建“todo”项目控制器类定义时,观察 Ember CLI“生成控制器”命令将创建一个标准的 Ember 控制器。标准控制器和ArrayController代表多个项目(如“TodosController”或“TodosListController”)。因此,TodoController 应该扩展 Ember.ObjectController 来表示单个项目:
\n\n `import Ember from \'ember\'`\n\n TodoController = Ember.ObjectController.extend\n actions:\n editTodo: ->\n @set \'isEditing\', true\n\n `export default TodoController`\nRun Code Online (Sandbox Code Playgroud)\n\n与问题一起发布的标准 Ember.Controller 在通过“each”帮助器传递时无法正确显示每个单独的待办事项,因为标准控制器的模型正在引用类型的所有记录的过滤集\'todo\',而不是特定的单个待办事项记录。
\n\n我\xe2\x80\x99创建了一个JS Bin来说明 - 只需在使用 Ember.Controller 和使用 Ember.ObjectController 之间切换“TodoController”,即可看到标准控制器失败。
\n\n另外,这不是问题的原因,但为了防止它被忽略,列表项类属性声明中缺少 \xe2\x80\x98isEditing:editing\xe2\x80\x99 :
\n\n section#main\n ul#todo-list\n each itemController=\'todo\'\n li class={isCompleted:completed, isEditing:editing} // <-- here\n if ...\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |