Ember文档理解 - 模板是否链接到模板?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ember文档理解 - 模板是否链接到模板?相关的知识,希望对你有一定的参考价值。
我现在正在学习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
只需要提供todos的动作。即使没有此控制器,也可以访问数据。在我看来有模型直接与模板连接不是吗?
或者是否有像这里提到的文件一样的默认控制器?
为方便起见,Ember.js提供了代理其模型属性的控制器,以便您可以在模板中而不是{{model.name}}中说出{{name}}。
正如你在这一行中看到的那样:<script type="text/x-handlebars" data-template-name="todos/index">
这是/
的模板,因为路由器有这一行:this.route('todos', { path: '/'})
。哪个将有一个名为TodosController
的控制器,即使你没有写一个余烬,也会为你生成一个。所以当你删除它时会发生什么。
在此模板中,您将遍历待办事项列表。这些Todo
模型中的每一个都装饰着控制器TodoController
。并使用这一行:{{#each todo in model itemController="todo"}}
你告诉ember使用这个TodoController
列表中的每个元素。
如果你遗漏了itemController
余烬假设todo是IndexController
提供的IndexRoute
模型的一部分。
默认情况下,ember有一个空控制器,它代理底层模型的所有内容。 (注意:我相信这会在ember 2.0中改变)。所以看起来它可能与模型直接耦合。但是你可以编写一个控制器,在不改变模型的情况下改变一切。
以上是关于Ember文档理解 - 模板是否链接到模板?的主要内容,如果未能解决你的问题,请参考以下文章