通常,如果您的控制器代表项目列表,您可以使用Ember.ArrayController
,如果控制器代表单个项目,则可以使用Ember.ObjectController
。像下面这样:
MyApp.ContactsController = Ember.ArrayController.extend({
content: [],
selectedContact: null
});
MyApp.SelectedContactController = Ember.ObjectController.extend({
contentBinding: 'contactsController.selectedContact',
contactsController: null
});
然后在你Ember.Router
(如果你使用它们),你将两个连接connectOutlets
函数内部:
connectOutlets: function(router) {
router.get('selectedContactController').connectControllers('contacts');
}
编辑:我从来没用过Ember.Controller
。看看源代码,如果你正在构建一个不适合其他两个控制器的自定义控制器,你可能会想使用它。
我的理解是,当控制器不是代理时(对象或数组都不是),就像'App.ApplicationController'一样使用'Ember.Controller'。 – dechov
Joachim pauldechov感谢您的精确回复!现在我知道他们的区别。 – xnjiang