【问题标题】:Ember identifying current userEmber 识别当前用户
【发布时间】:2015-03-02 20:26:08
【问题描述】:

我正在尝试使用 Ember CLI 和 rails API 后端,使用 simple-auth-devise 构建一个简单的聊天应用程序。我对 Ember 很陌生。我有以下设置:

  • 具有_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 变量。

非常感谢。

【问题讨论】:

    标签: ember.js


    【解决方案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 将会话注入控制器和路由,因此您不必显式设置它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 2019-08-30
      相关资源
      最近更新 更多