如何在模板中显示关系属性

时间:2014-09-18 15:55:25

标签: ember.js ember-data

我有一个这样的余烬数据模型:

var attr = DS.attr,
    hasMany = DS.hasMany,
    belongsTo = DS.belongsTo;
App.Message = DS.Model.extend({
    partner_pk: attr(),
    message: attr(),
    user: belongsTo('user', {async: true}),
    inquiry: belongsTo('inquiry', {async: true}),
    created_at: attr(),
    updated_at: attr()
});

并路由返回数据数组,如下所示:

App.TripMessagesRoute = Ember.Route.extend({
    model: function(){
        return this.store.find('message', {inquiry_id: 2});
    }
})

我的rest-api返回类似这种格式的数据:

{
    "data": [
        {
            "id": 10,
            "message": "this message is updated by ember.js",
            "inquiry_id": 2,
            "user_id": 1,
            "created_at": "2014-08-05 14:20:46",
            "updated_at": "2014-08-05 14:20:46"
        },
        {
            "id": 17,
            "message": "this is a test message by ember.js",
            "inquiry_id": 2,
            "user_id": 39,
            "created_at": "2014-08-26 17:34:55",
         }
      ]
}

在我的模板中,我显示的属性如下:

<script type="text/x-handlebars" data-template-name="trip/messages">
    <h2>message is: {{message}}</h2> <!-- This works fine -->
    <h2>User id: {{log user}}</h2> <!-- it gives  null -->
    <h2>User id: {{log user_id}}</h2> <!-- it gives  undefined -->
</script>

我的问题是如何在模板中显示 user_id 。提前谢谢。

1 个答案:

答案 0 :(得分:0)

默认情况下,Model定义中的属性名称应与JSON中返回的属性匹配。

您的选择是......

  • 将您的模型更改为user_id: belongsTo('user', {async: true})
  • 将您的JSON更改为"user_id": 39
  • 添加MessageSerializer并将对象从user_id更改为序列化程序中的user

然后,您应该可以在模板中添加{{user.id}}之类的内容。