【问题标题】:Understanding the relationship between controllers and routes in Ember理解 Ember 中控制器和路由的关系
【发布时间】:2013-01-04 08:50:49
【问题描述】:

我在理解 Ember 应用程序中控制器和路由之间的概念关系时遇到了一些麻烦。

我已经开始了一个非常简单的尖峰测试来评估 Ember,我越深入,我越发现我的路线充满了我应该通过的应该是控制器的责任,例如动作、连接模型,并最终分派到视图以呈现模板。

控制器都是空的,似乎只是一些自动映射要求的占位符。

我在这里遗漏了一个基本的东西 - 从 Rails 的角度来看,并将“rails 方式”应用(可能是错误的)Ember 我希望我的路由定义由 URL 表示的状态,这些状态将映射到控制器“行动”。

任何指针将不胜感激。

【问题讨论】:

  • 您看到最新的文档了吗?虽然它们还没有完全完成,但我想它会给你一些提示。 emberjs.com/guides/routingemberjs.com/guides/controllers
  • 嘿,不-自从我上次查看以来,他们已经更新了它们,非常感谢。我会阅读它们,看看它们是否有帮助:)
  • 是的,我认为来自 Rails 世界的你应该不会太难理解......毕竟,Yehuda 正在研究这两个 ^^
  • 人们这么说,但我很难理解。 Ember 控制器和路由感觉不像 Rails 控制器和路由。观点也不是。即使是 TodoMVC 中最权威的 Ember 示例,我仍然很难理解其中的魔力。特别是路线和景观
  • 我不明白这个问题怎么没有更多的选票。

标签: javascript ember.js


【解决方案1】:

虽然模型类处理对象及其状态,但控制器处理应用程序本身的状态。

一个非常简单的用例可能是表单有两种状态:readonlyMode 和 modifyMode。这显然不属于定义实际对象的模型。它只是您的应用程序的一种状态。

如果控制器说状态是只读模式,视图会将所有输入字段呈现为禁用。 modifyMode 则相反。

但我同意,决定将它放在哪里并不总是那么容易。最后,MVC 是关于概念的。不得不把它放入某种规则中,我会说:

  • 代表持久数据(存储在某种存储/DB 中)的所有内容通常都是模型的一部分。
  • 一切有助于使您的应用程序有状态 => 控制器。

【讨论】:

  • 谢谢 - 我非常了解 MVC 模式中模型的职责,ember 的问题在于它引入了路由器的概念,从我的角度来看,它似乎封装了很多我希望在控制器中找到的行为。随着我逐步完成这个过程,控制器和路由之间的关注点分离开始变得更加清晰。
  • 是的。在我看来,旧的路由器 API(1.0 pre3 之前)诱使开发人员在路由中投入大量精力。但是几天前发布的新 API 采用了更简洁的方法。我只是重写了应用程序的一个组件以使用新的 API。现在看起来更干净,分离效果更好。
  • 是的,我们刚刚将路由器更新为新样式 - 完全同意,pre3 对路由器的更改使整个讨论变得毫无意义,现在更清晰了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多