我已经阅读了Ember.js网站上的大部分初学者指南,但我仍然对正确放置内容的地方感到困惑。
路线 - 来自在线研究人员建议在路线中放置路由相关逻辑。这一切都很好,但我唯一能想到的是this.transisionTo()
。我在其他地方读到所有与模型相关的操作都应该在路径中,因为这是定义model
字段的地方。它是否正确?将actions
放在控制器上的路径中有哪些好的用例?
查看 - 目前,我看不到视图的重点。文档说它处理本机DOM事件但我可能总是使用由控制器处理的{{action}}
帮助器。那么在操作方面使用控制器视图的一些好用例是什么?视图的一些好用例通常考虑我将使用组件而不是视图来获取可重用代码。
控制器 - 在我看来,控制器可以执行View或Route可以执行的任何操作。它可以使用this.transitionToRoute()
进行转换,它可以使用this.get('model').save()
保存模型,并可以使用{{action}}
帮助程序处理操作。所有初学者教程似乎都完全忽略了视图,而是使用控制器。在View或Route上使用Controller有哪些好的用例?
我想这一切都归结为对所有事物如何挂在一起的理解不足。我无法在网上找到任何有关灰色区域的文档,例如在不同场景下使用{{action}}
帮助程序的位置。一些好材料的链接也会有所帮助。
答案 0 :(得分:16)
更新:不所有这些信息都适用于Ember 2.据我所知,Ember 2.0只会使用组件。
模型负责与数据存储交互。数据存储的示例可以是RESTful服务器或Localstorage。
模板负责从其Controller和View可用的数据构建HTML。然后,控制器可以访问模型。
控制器和视图非常相似,都会对用户生成的事件起作用。 Controller应该对submit
之类的语义事件采取行动,而View应该对focus
或click
等交互事件采取行动。
Ember有一个路由器。路由器将URL链接到路由。例如users/:user_id
到users.show
路线或UsersShowRoute
。
每个路线在激活后,负责将地址解压缩到州。例如,users/:user_id
要求用户登录才能查看朋友个人资料。路由确保用户已登录并负责登录状态。
路由从数据存储中提取信息。例如,users/pekhee
将从数据存储中获取pekhee
用户并将其提供给Controller和View。
路由动态地选择它需要的控制器和视图或它需要多少个。
路由管理应用程序的状态以及应该如何表示该状态。但是,模型负责管理Route和Controllers / Views的应用程序状态,负责管理其表示的细节。
activate
路由回调中。afterModel
回调中。当多个控制器使用一个模型时,在链中保留最高可能路径的语义操作,否则将逻辑保留在大多数本地控制器中。
将动画相关代码保存在View中并使用Liquid Fire。
有时每个用户都有很多帖子,每个帖子都有很多评论。尝试让Route返回相关用户。然后向相关用户询问PostsRoute
中的帖子,然后尝试在CommentsRoute
中询问相关评论。这使逻辑尽可能保持本地化。您评论路线并不需要知道如何检索用户。
答案 1 :(得分:0)
我认为ember2.0意味着放弃视图和控制器,它希望使您的代码更具可重用性,这就是为什么组件更受欢迎。为了将操作放在路由而不是控制器中,我只能看到它可以让新用户更容易理解ember。您不再需要花费大量时间来尝试理解控制器,路由,路由器,视图和模板之间的关系。这是我的猜测。