Em.Controller在Ember.js中扮演的角色是什么

时间:2012-10-05 06:13:14

标签: javascript controller ember.js

我自己在学习ember.js。

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


当我制作基本的余烬应用程序时,我唯一一次使用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继承的

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

我很困惑......

1 个答案:

答案 0 :(得分:4)

  • Ember.Controller是更简单的控制器类。正如您所见in the Ember.Controller source code,它只是一个带有目标(通常是路由器)和商店的对象,并继承Ember.ControllerMixin

  • Ember.ObjectController是一个ObjectProxy,您可以看到in the ObjectController source code:设置内容后,所有getter / setter都会被委托给其内容。所以ObjectController用于操作一个项目。

  • Ember.ArrayController的行为类似于ObjectController:它是一个代理,但对于一个数组,正如您所见in the ArrayController source code。因此ArrayController用于操作项目数组。

  • Ember.ControllerMixin只有很少的处理视图{{outlets}}的方法,因为您再次看到in the Ember.ControllerMixin source code(请注意此处的代码重新打开ControllerMixin)

你是对的,Ember.ArrayControllerEmber.ObjectController不是从Ember.Controller继承的,但它们都扩展了上述的Ember.ControllerMixin

我建议你阅读Advice on & Instruction in the Use Of Ember.js by Trek,这篇文章并不特别关于控制器,但你会学到很多东西,并了解它们是如何工作的(例如,出口)。

相关问题