2015-03-02 79 views
0

我正尝试使用Ember CLI与rails API后端构建一个使用simple-auth-devise的简单聊天应用程序。我对Ember很新。我有以下设置:Ember识别当前用户

  • has_many消息的对话模型。每条消息都属于用户。
  • 它加载的对话,并显示该消息被写入当前用户的所有邮件

我的问题是找出一个对话/显示路线。我可以识别路径中的当前用户并将其传递给控制器​​,但我不确定如何在模板中执行某些操作,而这是以此为条件的。下面是代码:在我想要做这样的事情的模板

import Ember from 'ember'; 

export default Ember.Route.extend({ 

model: function(params) { 
    return this.store.find('conversation', params.conversation_id); 
}, 

// Get the current user 
setupController: function(controller, model){ 
    this._super(controller, model); 
    var currentUser = this.get('session').get('currentUser'); 
    controller.set("currentUser", currentUser); 
} 

}); 

然后:

{{#each message in messages}} 

    {{message.body}} 
    {{#if message.isByCurrentUser }} 
     Written by me! 
    {{/if}} 
{{/each}} 

我不知道如何或在哪里

的对话/显示路线定义该message.isByCurrentUser方法以使用路由中定义的currentUser变量。

非常感谢提前。

回答

1

我建议你分开message资源,让它拥有自己的模板和控制器。

//messages.hbs 
{{#each message in messages}} 
    {{render "message" message}} 
{{/each}} 

//message.hbs 
{{message.body}} 
{{#if isByCurrentUser }} 
    Written by me! 
{{/if}} 

//message controller 
import Ember from 'ember'; 
export default Ember.Controller.extend({ 
currentUser: Ember.computed.alias('session.currentUser'), 
isByCurrentUser: function() { 
    return this.get('model.creator.id') === this.get('currentUser.id'); 
}.property('model.creator', 'currentUser') 
}); 

P.S:我假设你的消息模型具有名为creator的属性。根据您的型号更改它

simple-auth将会话注入到控制器和路由中,因此您不必显式设置它。

+0

问题解决了,谢谢! – AdamP 2015-03-02 13:42:31