2014-04-24 24 views
1

我有這樣一個模型:在同一文件中使用RESTAdapter Ember.js訪問不同的JSON性質

App.Person = DS.Model.extend({ 
name: DS.attr('string'), 
clothes: DS.attr() 
}); 

,並命名爲「人」文件這樣

{ 
    "persons": [ 
    { 
    "id": 1, 
    "name": "person1", 
    "clothes": ["one trouser","another trouser"] 
    }, 
    { 
    "id": 2, 
    "name": "person2", 
    "clothes": ["one trouser","another trouser"] 
    } 
    ] 
} 

我打電話它與:

return this.store.find('person'); 

現在,我想添加例如關於誰做的褲子json文件的信息:

"trousers": [ 
    { 
    "id": 1, 
    "name": "trouser1", 
    "madeby": ["one worker","another worker"] 
    }, 
    { 
    "id": 2, 
    "name": "trouser2", 
    "clothes": ["one worker","another worker"] 
    } 
] 

我不問如何使兩者之間的關係,但如何讓他們在同一個json文件中,並調用每一個。

回答

0

我想你是在談論「側載」。 Ember Data可以處理JSON中的多種類型的實體。

比方說你有一個模型

App.Trouser = DS.Model.extend({ 
    name: DS.attr('string'), 
    madeby: DS.attr() 
}); 

如果你返回JSON像這樣:

{ 
    "people": [ 
    { 
     "id": 1, 
     "name": "person1", 
     "clothes": [1, 2] 
    }, 
    { 
     "id": 2, 
     "name": "person2", 
     "clothes": [1, 2] 
    } 
    ], 
    "trousers": [ 
    { 
     "id": 1, 
     "name": "trouser1", 
     "madeby": ["one worker","another worker"] 
    }, 
    { 
    "id": 2, 
    "name": "trouser2", 
    "clothes": ["one worker","another worker"] 
    } 
    ] 
} 

然後,store.find('person')將看到"trousers",並自動加載這些進入店內褲子的型號。同樣,如果您有名爲寵物另一種模式,你可以另一個鍵添加到JSON,自動加載一些寵物:

{ 
    "persons": [ 
    // ... 
    ], 
    "trousers": [ 
    // ... 
    ], 
    "pets": [ 
    // some pets here 
    ] 
} 

即使你沒有創建所有這些模型之間的關係,他們將在JSON會將它們加載到餘燼數據的商店中。

一旦他們在商店,他們將檢索與標準查找由ID

this.store.find('trouser', 1); 

然後,您可以通過執行以下的電纜鋪設工作關係:

App.Person = DS.Model.extend({ 
    name: DS.attr('string'), 
    clothes: DS.hasMany('trouser') // <-- 
}); 
+0

這一點。 store.find('trouser',1);正在調用GET localhost/trousers而不是與人相同的json文件 – Pedro4441

+0

它返回,我如何從那裏訪問該名稱? .get('name')不起作用 – Pedro4441

+0

如果我使用.then它將返回一個[object Object],並且如果y試圖使用#each查看它:#each循環的值必須是一個Array。您已通過{_id:111,_label:undefined,_subscribers:} – Pedro4441