4.5 Routing -- Setting Up A Controller

1. 改变URL可能也会改变屏幕显示哪个模板。然而,如果它们有信息去显示,模板才是有用的。

2. 在Ember.js中,一个模板从一个controller检索信息去显示。

3. 为了告诉controller去展示哪个模板,在路由处理器的setupController hook中设置它的model属性。

app/router.js

Router.map(function() {
  this.route('post', { path: '/posts/:post_id' });
});

app/routes/post.js

export default Ember.Route.extend({
  // The code below is the default behavior, so if this is all you
  // need, you do not need to provide a setupController implementation
  // at all.
  setupController: function(controller, model) {
    controller.set('model', model);
  }
});

4. setupController hook接收路由处理器相关的controller作为它的第一个参数。在这种情况下,post路由的setupController接受应用程序的controller:posts实例。

5. 指定一个默认之外的controller,设置路由的controllerName属性:

app/routes/special-post.js

export default Ember.Route.extend({
  controllerName: 'post'
});

作为第二个参数,它接受路由的处理器model。

6. 默认的setupController hook设置相关controller的model属性为路由处理器的model。

7. 如果你想要配置一个路由处理器相关的controller之外的controller,使用controllerFor方法:

export default Ember.Route.extend({
  setupController: function(controller, model) {
    this.controllerFor('topPost').set('model', model);
  }
});
posted @ 2016-01-25 16:01  鱼不吐泡泡  阅读(252)  评论(0编辑  收藏  举报