2016-04-27 44 views
0

我在加載belongsTo關係時遇到問題 - 沒有顯示錯誤,也沒有發送任何請求。用戶界面只是空白。給定以下型號:在Ember 2中加載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":[ 

      ] 
     } 
     } 
    } 
} 

但是試圖訪問客戶時,沒有任何反應(有沒有我的意思是:沒有控制檯輸出,沒有要求客戶端點等UI只是無法加載):

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

訪問其他屬性的工程(包括項目的項目)。

任何想法,我要去哪裏錯了?

+0

時,我相信,因爲關係是異步,那麼得到的是返回一個承諾。然後((顧客)=> {現在我們可以與顧客 });' – snewcomer

+0

謝謝。不幸的是,這不起作用 - 問題似乎是'project.get('customer')' - 這是失敗的地方。 – JB2

+0

返回值是未定義的還是實際的東西? – snewcomer

回答

2

在您的project模型中,您將customer定義爲async: false,這意味着應在從您的服務器加載項目時提供它。從您提供的json輸出中缺少客戶數據。

因此,無論包括customer記錄返回從服務器的JSON或使客戶async: true的時候,所以它會得到加載調用project.get('customer')