gpt4 book ai didi

ember.js - Ember 路由、 Controller 、 View

转载 作者:行者123 更新时间:2023-12-02 13:07:10 25 4
gpt4 key购买 nike

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

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

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

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

我想这一切都归结于对一切如何结合在一起的理解不足。我在网上或文档中找不到任何关于灰色区域的明确信息,例如在不同场景中使用 {{action}} 帮助器的位置。一些好的 Material 的链接也会有帮助。

最佳答案

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

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

型号

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

模板

模板负责根据其 Controller 和 View 可用的数据构建 HTML。 Controller 又可以访问模型。

Controller 和 View

Controller 和 View 非常相似,并且都作用于用户生成的事件。 Controller 应该对诸如 submit 之类的语义事件采取行动,而 View 应该对诸如 focusclick 之类的交互事件采取行动。

路由器

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

路线

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

路由从数据存储中获取信息。例如,users/pekhee将从数据存储中获取pekhee用户并将其提供给 Controller 和 View 。

路由动态选择它需要的 Controller 和 View 或它需要的 Controller 和 View 的数量。

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

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

  • 如果您的逻辑不关心任何上下文或模型,请将其放入路由的activate 回调中。
  • 如果一段逻辑只需要知道模型,请将其放在路由的 afterModel 回调中。
  • 如果它需要了解 Controller 的上下文或与资源的语义进行交互,请将其放入 Controller 中。
  • 如果需要了解 View 的上下文或与资源的表示进行交互,请将其放入 View 中。
  • 如果需要了解上下文或与资源的语义和表示进行交互,请首先将事件传递给 View ,然后将其升级到 Controller 。

示例

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

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

有时每个用户都有很多帖子,每个帖子都有很多评论。尝试让路由返回相关用户。然后在 PostsRou​​te 中向相关用户询问帖子,然后尝试在 CommentsRou​​te 中询问相关评论。这使逻辑尽可能本地化。您的评论路由不需要知道如何检索用户。

关于ember.js - Ember 路由、 Controller 、 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24712265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com