4

我正在自己学习 ember.js。

我想知道 Em.Controller 的确切角色。


当我制作基本的 ember 应用程序时,我唯一使用 Em.Controller 的时间是

App.ApplicationController = Em.Controller.extend();

但我不知道为什么它应该是 Em.Controller 而不是 Em.ArrayController 或 Em.ObjectController。


我知道 ArrayController 或 ObjectController 用于处理模型。

所以我知道在处理模型时我必须使用 ArrayController 或 ObjectController。

但是 Em.Controller 呢?

它只存在于 App 的 ApplicationController 中吗?


并且似乎 Em.ArrayController 和 Em.ObjectController 不是从 Em.Controller 继承的

那么它们之间是什么关系呢?

我很困惑....

4

1 回答 1

4
  • Ember.Controller是更简单的控制器类。正如您在 Ember.Controller 源代码中看到的那样,它只是一个具有目标(通常是路由器)、存储和继承的对象Ember.ControllerMixin

  • Ember.ObjectController是一个 ObjectProxy,你可以在 ObjectController 源代码中看到:当它的内容被设置时,所有的 getter/setter 都被委托给它的内容。因此 ObjectController 用于操作一项。

  • Ember.ArrayController就像 ObjectController 一样:它是一个代理,但对于一个 Array,正如您在 ArrayController 源代码中看到的那样。因此 ArrayController 用于操作项目数组。

  • Ember.ControllerMixin只是处理视图的方法很少,正如您在 Ember.ControllerMixin 源代码中{{outlets}}再次看到的那样(注意这里的代码重新打开了 ControllerMixin)

你是对的,Ember.ArrayController并且Ember.ObjectController不是继承自Ember.Controller,但它们都扩展了Ember.ControllerMixin上述内容。

我建议你阅读Trek 的 Advice on the Use Of Ember.js 的指导,这篇文章不是专门关于控制器的,但你会学到很多东西,并了解它们是如何工作的(例如 outlet)。

于 2012-10-05T06:57:19.480 回答