ObjectController和ArrayController

xnj*_*ang 8 ember.js

我学习emberjs形成trek.github.com.该教程使用了Em.ObjectControllerEm.ArrayController.而且还有Em.Controller.

我很困惑何时使用它们,我猜Em.ObjectController是单个对象,Em.ArrayController是数组,Em.Controller只是为ApplicationController.

什么时候使用哪个有什么有福的规则?

Joa*_*eie 13

通常,如果您的Controller代表一个项目列表,您将使用Ember.ArrayController,如果控制器代表一个项目,您将使用Ember.ObjectController.类似于以下内容:

MyApp.ContactsController = Ember.ArrayController.extend({
    content: [],
    selectedContact: null
});

MyApp.SelectedContactController = Ember.ObjectController.extend({
    contentBinding: 'contactsController.selectedContact',
    contactsController: null
});
Run Code Online (Sandbox Code Playgroud)

然后在你的Ember.Router(如果你使用它们),你将连接connectOutlets函数内的两个:

connectOutlets: function(router) {
    router.get('selectedContactController').connectControllers('contacts');
}
Run Code Online (Sandbox Code Playgroud)

编辑:我从未使用过Ember.Controller.查看源代码,如果您正在构建一个不适合其他两个控制器的自定义控制器,您似乎可能想要使用它.

  • 我的理解是,当控制器不是代理(既不是对象也不是数组)时,你使用`Ember.Controller`,就像你的'App.ApplicationController`一样. (4认同)