【发布时间】:2015-06-03 08:50:14
【问题描述】:
我现在正在学习 Ember,但由于 Ember 的文档和入门示例,我有点困惑。 在文档中它说:
在 Ember.js 中,模板从装饰模型的控制器获取属性。
和
模板始终连接到控制器,而不是模型。
但在完成入门指南后,我不确定这是否正确。
我已经在这里上传了完成的 TodoMVC 应用程序:https://github.com/Yannic92/stackOverflowExamples/tree/master/Ember/TodoMVC
在Index.html 中,您会找到这个模板:
<script type="text/x-handlebars" data-template-name="todos/index">
<ul id="todo-list">
{{#each todo in model itemController="todo"}}
<li {{bind-attr class="todo.isCompleted:completed todo.isEditing:editing" }}>
{{#if todo.isEditing}}
{{edit-todo class="edit" value=todo.title focus-out="acceptChanges" insert-newline="acceptChanges"}}
{{else}}
{{input type="checkbox" checked=todo.isCompleted class="toggle"}}
<label {{action "editTodo" on="doubleClick"}}>{{todo.title}}</label>
<button {{action "removeTodo"}} class="destroy"></button>
{{/if}}
</li>
{{/each}}
</ul>
</script>
我的问题是指第 3 行:
{{#each todo in model itemController="todo"}}
控制器todo 只需要为待办事项提供操作。即使没有此控制器,也可以访问数据。
在我看来,模型与模板直接相关不是吗?
或者有没有像这里提到的文档那样的默认控制器?
为方便起见,Ember.js 提供了从模型中代理属性的控制器,因此您可以在模板中使用 {{name}} 而不是 {{model.name}}。
【问题讨论】:
标签: javascript templates ember.js model