Setting Up a Controller Edit Page
Changing the URL may also change which template is displayed on screen. Templates, however, are usually only useful if they have some source of information to display.
In Ember.js, a template retrieves information to display from a controller.
Two built-in controllers—Ember.ObjectController and
Ember.ArrayController—make it easy for a controller to present a
model's properties to a template, along with any additional
display-specific properties.
To tell one of these controllers which model to present, set its
model property in the route handler's setupController hook.
1 2 3 4 5 6 7 8 9 |
App.Router.map(function() { this.resource('post', { path: '/posts/:post_id' }); }); App.PostRoute = Ember.Route.extend({ setupController: function(controller, model) { controller.set('model', model); } }); |
The setupController hook receives the route handler's associated
controller as its first argument. In this case, the PostRoute's
setupController receives the application's instance of
App.PostController.
As a second argument, it receives the route handler's model. For more information, see Specifying a Route's Model.
The default setupController hook sets the model property of the
associated controller to the route handler's model.
If you want to configure a controller other than the controller
associated with the route handler, use the controllerFor method:
1 2 3 4 5 |
App.PostRoute = Ember.Route.extend({
setupController: function(controller, model) {
this.controllerFor('topPost').set('model', model);
}
});
|