在Ember 2

时间:2016-04-27 22:55:14

标签: ember.js ember-data ember-2.0.0

我遇到加载belongsTo关系的问题 - 没有显示错误,也没有发送请求。用户界面只是空白。鉴于以下模型:

project.js     从' ember-data';

导入DS
export default DS.Model.extend({
    name: DS.attr(),
    items: DS.hasMany('line-item', {async: true}),  
    customer: DS.belongsTo('customer', {async: false})  
});

customer.js

import DS from 'ember-data';

export default DS.Model.extend({
    name: DS.attr(),
    email: DS.attr(),
    projects: DS.hasMany('project', {async: true})  
});

项目客户之间存在关系。访问项目端点时,项目会正确返回:

{  
   "data":{  
      "type":"projects",
      "id":"3861b834-e270-4296-b7be-9aca55676874",
      "attributes":{  
         "created":"2016-04-27T22:36:01.061349Z",
         "modified":"2016-04-27T22:36:01.061477Z",
         "name":"Sample name",
      },
      "relationships":{  
         "customer":{  
            "data":{  
               "type":"customers",
               "id":"9242bd41-6bb0-41ed-b5f3-21df26486d9e"
            }
         },
         "items":{  
            "meta":{  
               "count":0
            },
            "data":[  

            ]
         }
      }
   }
}

然而,在尝试访问客户时,没有任何反应(没有任何意义:没有控制台输出,没有客户端点的请求等.UN无法加载):

this.get('project').get('customer');

访问其他属性(包括项目的项目)。

知道我哪里出错了?

1 个答案:

答案 0 :(得分:2)

project模型中,您将customer定义为async: false,这意味着在从服务器加载项目时应提供此模型。从您提供的json输出中缺少客户数据。

因此,在从服务器返回json时要么包含customer记录,要么让客户async: true,所以在调用project.get('customer')

时会加载它