课程表

Ember.js 基础

Ember.js 对象模型

Ember.js handlebars模板

Ember.js 路由

Ember.js 组件

Ember.js 控制器

Ember.js 模型

Ember.js 测试

工具箱
速查手册

管理控制器之间的依赖关系

当前位置:免费教程 » JS/JS库/框架 » Ember.js

在有路由嵌套的情况下,你可能需要在两个不同的controller之间通信。 按照惯例先做准备工作:

  1. ember g route post
  2. ember g route post/comments
  3. ember g model post

比如下面的路由设置:

  1. // router.js
  2. import Ember from 'ember';
  3. import config from './config/environment';
  4. var Router = Ember.Router.extend({
  5. location: config.locationType
  6. });
  7. Router.map(function() {
  8. this.route('blog-post');
  9. this.route('post', { path: '/posts/:post_id' }, function() {
  10. this.route('comments');
  11. });
  12. });
  13. export default Router;

对于这个路由配置生成的路由表请看“{{link-to}} 助手”章节。

如果用户访问/posts/1/comments。模型post就会加载到postController,并不会直接加载到commentsController。然后如果你想在一篇post中显示comment信息呢?

为了实现这个功能,可以把postController注入到commentController中。

  1. // app/controllers/comments.js
  2. import Ember from 'ember';
  3. export default Ember.Controller.extend({
  4. postController: Ember.inject.controller('post')
  5. });

一旦comments路由被访问,postController就会获取控制器对应的model,并且这个model是只读的。为了能获取到模型post还需要增加一个引用postController.model

  1. // app/controllers/comments.js
  2. import Ember from 'ember';
  3. export default Ember.Controller.extend({
  4. postController: Ember.inject.controller('post'),
  5. post: Ember.computed.reads('postController.model')
  6. });

最后可以直接在comment模板中显示模型postcomment的信息。

  1. <h1>Comments for {{post.title}}</h1>
  2. <ul>
  3. {{#each model as |comment|}}
  4. <li>{{comment.text}}</li>
  5. {{/each}}
  6. </ul>

有关更多别名的介绍请移步这里查看API文档的介绍。如果你想了解更多关于注入的问题请看这里的教程(新版官网已经没有这个地址的文档了)。

controller这章的内容到此也全部介绍完毕了,只有寥寥的2篇教程,可见controllerEmber未来版本会被组件替代已成必然。

那么下一章将为大伙介绍模型,模型对于Ember来说是一块非常重要的内容,内容也比较多!

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号