zoukankan      html  css  js  c++  java
  • 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

    app/controllers/comments.js

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

    一旦comments访问PostController,一个只读别名可以被用来从哪个controller中读取model。为了获取Post model,我们参考postController.model:

    app/controllers/comments.js

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

    app/templates/comments.hbs

    <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。 

  • 相关阅读:
    沿着河边走,环城60公里
    与客家土楼的约会(叶剑英故居福建)
    与客家土楼的约会(增城河源)
    与客家土楼的约会(东源龙川)
    C#几个经常犯错误
    C# 获取当前路径方法
    C# Stopwatch与TimeSpan详解
    话说程序员成熟的标志
    C#开源项目介绍
    C#各种加密算法的研究
  • 原文地址:https://www.cnblogs.com/sunshineground/p/5165607.html
Copyright © 2011-2022 走看看