2016-04-27 11 views
0

belongsToの関係をロードする際に問題が発生しました。エラーは表示されず、リクエストは送信されません。 UIは空白のままです。与えられたモデル:Ember 2のbelongsTo関係のロード中にエラーが発生しました

project.js import DS from 'ember-data';

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":[ 

      ] 
     } 
     } 
    } 
} 

しかし、何も何も(起こらない私は意味:なしコンソール出力、顧客エンドポイントなどへの要求なしをUIだけロードに失敗します):

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

他の属性へのアクセス(プロジェクトの項目を含む)。

私はどこに間違っていますか?

+0

を呼び出すときに、それがロードされますので、ご使用のサーバからJSONを返すときcustomerレコードを含めるか、または顧客async: trueを作ります。 'project.get( 'customer')。then((customer)=> { //今私たちは顧客と一緒に働くことができます });' – snewcomer

+0

ありがとうございます。残念ながら、これはうまくいきません - 問題は 'project.get( 'customer')'と思われます - これが失敗する場所です。 – JB2

+0

戻り値は定義されていないか、実際には何か? – snewcomer

答えて

2

projectモデルでは、customerasync: falseと定義しました。つまり、サーバーからプロジェクトをロードする際に提供する必要があります。顧客データを提供したjson出力から、データが欠落しています。だから、

のいずれかが、その後のGETが約束を返して、関係が非同期であるため、私は信じてproject.get('customer')

関連する問題