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 路由、控制器、视图 的相关文章

  • 如何让 jQuery Mobile 停止破坏 Ember.js 网站?

    我有一个用 Ember js 编写的网站 导航基于带有 符号的 url 我已经包含了 jQuery Mobile 我也有 jQuery 标准 jQuery 还可以 但是当我包含 jQuery Mobile 时 奇怪的事情发生了 符号从 UR
  • 使用 ember.js 时出现 Access-Control-Allow-Origin 错误(使用 ember-cli)

    这是我在 app routes customers js 中的路线 export default Ember Route extend model function return getJSON http 127 0 0 1 3000 od
  • 是否可以在 Handlebars #if 中使用函数?

    我有一个控制器对象 如下所示 MyApp objController Ember ArrayController create init function data data isValid function return data val
  • ember 中可重用对象的架构

    我正在使用 ember 构建一个管理仪表板 我想创建一个可重用的图表对象 我可以在整个应用程序中拥有多个实例 图表对象应该有一个由一些标记和一个画布元素组成的模板 在插入 DOM 后我需要其 id 以便附加实际的图表 chart js 我尝
  • 如何更改 Ember 中的查询参数?

    我正在编写一个动作处理程序route application actions changeFoo foo I want to change the fooId queryParam to foo get id 问题是我能找到的唯一记录的更改
  • 检查 Ember Handlebar If 块助手中的值是否等于

    我们如何检查值是否相等ember js http www emberjs com的 If 块助手 if person John 我们如何在车把上执行上述操作 The if helper 只能测试属性 不能测试任意表达式 因此 在这种情况下
  • Ember.js 在特定页面上包含外部脚本

    我试图弄清楚如何包含外部 javascript 源 图表 但仅限于网站上的单个页面 可以在视图或模板中完成吗 我发现只需添加页面模板不起作用 如果我将它添加到整个网站的模板中 它加载得很好 但是它会加载到每个页面上 我的问题的另一面可能更具
  • 防止回车键触发按钮

    我有一个搜索输入框 当用户按下 Enter 时不需要执行任何操作 我正在使用 EmberJS 和 Jquery 以及以下代码 目前 它可以禁止触发弹出窗口 但由于某些原因 在 IE9 中 当按下 Enter 键时 切换按钮将成为焦点 在 C
  • 在 Ember.js 中,为什么绑定到数组在 {{#each}} 之外不起作用?

    在下面的代码中 我渲染了 3 个视图 第二个和第三个视图渲染App controller a 单击第一个视图会发生变化App controller a 单击时 第三个视图会更新其内容 第二个视图不更新其内容 为什么 我认为第二个视图绑定到数
  • Ember:断言失败:EmberObject.create 不再支持定义计算属性

    我使用的是 Ember 2 16 版本 我们升级到了 3 8 版本升级后 我看到此错误 但无法弄清楚错误来自何处 在什么情况下我会收到此错误 我看到其中一篇帖子 Ember JS 中的动态计算属性已弃用 https stackoverflo
  • Ember 组件在路由或控制器中调用操作

    我有一个组件 其主要目的是显示一行项目 每行都有一个删除按钮 可以删除一行 如何将操作从模板传递到将在路由器中触发操作的组件 这是使用该组件的模板 templates holiday hours hbs each model as holi
  • 观察嵌套对象的属性

    小提琴示例 http emberjs jsbin com aviyUnA 9 edit html js 输出 http emberjs jsbin com aviyUnA 9 edit html js output 这是我的模型 name
  • Action Cables、嵌套 JSON 属性和 JSONAPI

    我有一个相当具体的问题 我希望你们中的一个真正聪明的人可能知道解决方案 甚至是现阶段的解决方法 具体来说 我正在处理操作电缆 嵌套 JSON 和 JSONAPI 我有一个asset模型 它具有一些属性 例如name desc等等 但它还有一
  • Ember 不更新模型更改的视图

    该小提琴重新创建了入门套件 并带有可更改模型的额外按钮 http jsfiddle net UjacC 1 http jsfiddle net UjacC 1 但是 当单击 更改 时 数组会更改 但视图不会更新 为什么
  • Ember.js 输入字段

    是否可以在 Ember js 视图中使用标准 HTML5 输入字段 或者您是否被迫使用 Ember TextField Ember CheckBox Ember TextArea 和 Ember select 等内置字段的有限选择 我似乎无
  • 如何将子记录添加到现有父记录中?

    我一直在 Google 和 Stack Overflow 上搜索有关这个主题的某种提示 但信息充其量是分散的 我正在尝试创建一个新的子记录 Comment 并将其保存到现有的父记录 Post 我使用的是 Ember Model 而不是 Em
  • 将 Ember 组件附加到不受 Ember 管理的 DOM 元素

    我想附加一个 Ember 组件ComponentB到由某些非 Ember UI 库生成的 DOM 元素didInsertElement of ComponentA 导致类似的结果 div class ember view component
  • 是否可以使用脚本标签加载车把模板?或者在 Ember.js 中以编程方式定义车把模板

    很简单 我不想在 html 文件中定义所有车把模板 我试过这个 但这没有用 我是否可以不以编程方式定义模板 甚至只是加载车把文件 以便我可以重用 而且我觉得这使事情更易于维护 我尝试用 ajax 加载它们并将它们附加到头部 这工作正常 我可
  • 找不到将 ember-cli 应用程序迁移到 TypeScript 的模块

    我想在我的 ember 项目中尝试 ts 我之前在小型应用程序上尝试过 所以我有 ember cli typify 0 3 1 typescript 2 0 3 typings 1 4 0 ember cli 2 4 3 在我的里面tsco
  • ember-data-1.0.0 activemodeladapter 错误在传递给“push”的哈希中包含“id”

    我在后端使用 ember data 和带有 Rails 和 mongoid mongodb 的 activemodel 适配器 每当我向 Rails 应用程序发出请求时 emberjs 都会显示返回的数据 但在 chrome 开发人员控制台

随机推荐