我正在从trek.github.com学习emberjs。该教程同时使用了和。而且还有。Em.ObjectController
Em.ArrayController
Em.Controller
我很困惑何时使用它们,我猜Em.ObjectController
是针对单个对象,Em.ArrayController
针对数组并且Em.Controller
仅针对 ApplicationController。
什么时候使用哪个有什么祝福的规则吗?
我正在从trek.github.com学习emberjs。该教程同时使用了和。而且还有。Em.ObjectController
Em.ArrayController
Em.Controller
我很困惑何时使用它们,我猜Em.ObjectController
是针对单个对象,Em.ArrayController
针对数组并且Em.Controller
仅针对 ApplicationController。
什么时候使用哪个有什么祝福的规则吗?
通常,如果您的 Controller 表示项目列表,您将使用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
. 查看源代码,如果您正在构建一个不适合其他两个控制器的自定义控制器,您似乎可能想要使用它。
一般规则是它取决于路线的模型。
如果模型是一个数组,那么你应该使用 ArrayController。它将允许您在将来以简单的方式实现排序或过滤。ArrayController 通常连接 ObjectControllers。
当您的模型是 Ember 对象的实例时,您应该使用 ObjectController。它发生在您使用例如 ember 数据时。使用 Objectcontroller,您可以直接访问模型属性。你不必model.property
每次都写。
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return Ember.Object.create({name: 'Mathew'});
}
});
My name is {{name}}
最后,当一个人没有模型时,有一个理想的情况可以使用 justEmber.Controller
。它不允许像 ObjectController 一样直接访问模型属性。