Normalerweise, wenn Ihr Controller eine Liste von Elementen darstellt, würden Sie die Ember.ArrayController
verwenden, und wenn der Controller ein einzelnes Element darstellt, würden Sie die Ember.ObjectController
verwenden. So etwas wie die folgenden:
MyApp.ContactsController = Ember.ArrayController.extend({
content: [],
selectedContact: null
});
MyApp.SelectedContactController = Ember.ObjectController.extend({
contentBinding: 'contactsController.selectedContact',
contactsController: null
});
Dann in Ihrem Ember.Router
(wenn Sie sie verwenden), würden Sie die beiden in der connectOutlets
Funktion verbinden:
connectOutlets: function(router) {
router.get('selectedContactController').connectControllers('contacts');
}
Edit: Ich habe nie verwendet haben die Ember.Controller
. Wenn Sie sich den Quellcode ansehen, scheint es, als wollten Sie diesen verwenden, wenn Sie einen benutzerdefinierten Controller erstellen, der nicht zu den beiden anderen Controllern passt.
Mein Verständnis ist, dass Sie 'Ember.Controller' verwenden, wenn der Controller kein Proxy ist (weder für ein Objekt noch für ein Array) wie im Falle Ihrer' App.ApplicationController'. – dechov
Joachim Pauldechov Danke für Ihre präzise Antwort! Jetzt kenne ich den Unterschied von ihnen. – xnjiang