在Ember.js中创建没有路径的子控制器

时间:2014-04-07 08:19:13

标签: javascript ember.js

我正在使用ember.js建立一个聊天应用程序(我很新),具有以下细节:

  • 每个用户都有多个线程,每个用户只涉及两个用户
  • 我需要在" facebook"中显示帖子和消息。没有线程列表的方式以及它的消息
  • 每条消息都有一个我需要使用的读取状态
  • 此应用可使用/:thread_id
  • 等网址模式

给予theese,我已经建立了一个应用程序 https://gist.github.com/Fed03/33da4a7c28c792af23cf(为了您的可读性,我已经合并了各种js文件)但问题出现在特定的消息状态。
根据我对余烬的理解,evrything"需要"一个路由以代理事物,但是如果你看一下代码和细节,就不需要message路线,但是我需要一个MessageController来管理单个消息说明。

显然,我对这个应用程序的架构做了一些非常错误的事情,所以如果有人告诉我一些建议会很棒!
提前谢谢!

1 个答案:

答案 0 :(得分:1)

您想要使用{{render}} helper

不是在线程模板中呈现每个模型,而是将模型传递给{{render}}并使其处理显示消息,并且它将拥有它自己的控制器。

您需要为msg创建一个单独的模板,如下所示:

<script type="text/x-handlebars" data-template-name="message">
    <div class="col-md-12">
        <div class="well">
             <div class="message-header">
                 <h5>{{user.fullname}}</h5>
             </div>
                 {{body}}
                 {{isRead msg}}
        </div>
    </div>
</script>

然后将您的线程模板更改为:

<script type="text/x-handlebars" data-template-name="thread">
    {{#each msg in model.messages}}
        {{render 'message' msg}}
    {{/each}}
    <div class="col-md-12">
        <div class="row">
            <div class="col-md-5">
                {{textarea value=message rows="3" class="form-control" data-thread=model}}
                <div>
                    <button class="btn btn-primary pull-right" {{action 'send' model}}>
                        Submit
                    </button>
                </div>
            </div>
        </div>
    </div>
</script>

然后每个msg都拥有自己MessageController的实例,您可以使用它来处理它的状态。