Ember 路由、控制器、视图

2024-04-15

我已阅读 Ember.js 网站上的大部分初学者指南,但我仍然对放置内容的正确位置感到困惑。

  1. Route- 根据在线研究,人们建议将与路由相关的逻辑放入路由中。一切都很好,但我唯一能想到的是this.transisionTo()。我在其他地方读到所有与模型相关的操作都应该在路线中,因为那是model字段已定义。它是否正确? put 有哪些好的用例actions在控制器上的路由中?

  2. View- 目前,我看不到这个观点的观点。文档说它处理本机 DOM 事件,但我可能会始终使用{{action}}由控制器处理的助手。那么在操作方面使用控制器上的视图有哪些好的用例呢?通常考虑到我将使用组件而不是视图来实现可重用代码,视图有哪些好的用例。

  3. 控制器- 在我看来,控制器可以做视图或路由可以做的任何事情。它可以使用转换this.transitionToRoute(),它可以使用保存模型this.get('model').save()并可以使用{{action}}帮手。所有初学者教程似乎完全忽略视图并使用控制器。在视图或路由上使用控制器有哪些好的用例?

我想这一切都归结于对一切如何联系在一起的理解不深。我在网上或文档中找不到任何关于灰色区域的明确内容,例如在哪里使用{{action}}不同场景的帮手。一些好的材料的链接也会有帮助。


Update: Not所有这些信息对于 Ember 2 都是正确的。据我所知,Ember 2.0 将仅使用组件。

Ember.js 的各个组件如何组合在一起

Model

模型负责与数据存储交互。数据存储的示例可以是 RESTful 服务器或本地存储。

Template

模板负责根据其控制器和视图可用的数据构建 HTML。控制器又可以访问模型。

控制器和视图

控制器和视图非常相似,都作用于用户生成的事件。控制器应该对语义事件采取行动,例如submit视图应该对交互事件采取行动,例如focus or click.

Router

Ember 有一个路由器。路由器将 url 链接到路由。例如users/:user_id to users.show路线或UsersShowRoute.

Route

每个路由在激活时都会负责将 url 解包到一个状态。例如users/:user_id要求用户登录才能查看朋友的个人资料。路由确保用户已登录并管理登录状态。

路由从数据存储中获取信息。例如users/pekhee将获取pekhee用户从数据存储并将其提供给控制器和视图。

路由动态地选择它需要什么控制器和视图或者它需要多少个控制器和视图。

路由管理应用程序的状态以及如何表示该状态。然而,模型负责管理路由应用程序的状态,控制器/视图负责管理其表示的具体细节。

保持逻辑尽可能相关和本地化:一些注释

  • 如果您的逻辑不关心任何上下文或模型,请将其放入activate路由的回调。
  • 如果一段逻辑只需要知道模型就把它放进去afterModel路由的回调。
  • 如果它需要了解控制器的上下文或与资源的语义进行交互,请将其放入控制器中。
  • 如果它需要了解视图的上下文或与资源的表示进行交互,请将其放入视图中。
  • 如果它需要了解两个上下文或与资源的语义和表示进行交互,请首先将事件提供给视图,然后将其升级到控制器。

Examples

当多个控制器与一个模型一起工作时,请将语义操作保留在链中最高可能的路由上,否则将逻辑保留在大多数本地控制器中。

将动画相关代码保留在 View 中并使用 Liquid Fire。

有时每个用户都有很多帖子,每个帖子都有很多评论。尝试让路由返回相关用户。然后向相关用户询问帖子PostsRoute然后尝试在以下位置征求相关意见CommentsRoute。这使逻辑尽可能本地化。您的评论路由不需要知道您如何检索用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ember 路由、控制器、视图 的相关文章

随机推荐