了解Ember中控制器和路由之间的关系

时间:2013-01-04 08:50:49

标签: javascript ember.js

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

我已经开始了一个非常简单的尖峰测试的路径来评估Ember,我越深入其中,我越是看到我的路线填满我应该是控制器的责任,例如操作,连接模型,最终调度到视图以呈现模板。

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

我在这里错过了一个基本的东西 - 来自Rails的观点,并且(或者错误地)将“rails way”应用于Ember我期望我的路由定义由URL表示的状态,这将映射到控制器“动作”。

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:2)

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

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

如果控制器声明状态为readonlyMode,则视图将所有输入字段呈现为已禁用。与modifyMode相反。

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

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