6.3 Controllers -- Managing Dependencies Between Controllers

1. 有时候,特别是当嵌套资源的时候,我们需要在两个controllers之间的某种连接。让我们拿这个router当做例子:

app/router.js

var Router = Ember.Router.extend({});

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

export default Router;
    • 如果我们访问/posts/1/comments URL,我们的post model将会被加载进一个PostController的model,意思就是它不能直接的CommentsController中访问。我们也许想在comments模板中展示一些关于它的信息。
    • 我了可以这样做,我们把PostController注入CommentsController
export default Ember.Controller.extend({
  postController: Ember.inject.controller('post')
});

一旦comments访问

 

export default Ember.Controller.extend({
  postController: Ember.inject.controller('post'),
  post: Ember.computed.reads('postController.model')
});

 

 

<h1>Comments for {{post.title}}</h1>

<ul>
  {{#each model as |comment|}}
    <li>{{comment.text}}</li>
  {{/each}}
</ul>

 

2. 在Ember.js中想要获取更多的关于依赖注入的信息,请看dependency injection guide。

3. 想要获得更多关于别名的信息,请看的aliased properties.API。

 

你可能感兴趣的:(6.3 Controllers -- Managing Dependencies Between Controllers)