2014-12-02 59 views
0

我想知道是否可以在ember-data中加載hasMany關係 - 掛鉤在非id列上。下面是我的代碼snippets-Ember data:side-loading使用非id字段有很多關係

App.Profile = DS.Model.extend({ 
    firstName: DS.attr(), 
    lastName: DS.attr(), 
    photo: DS.hasMany('photo', {async:true}) 
}); 

App.Photo = DS.Model.extend({ 
    path: DS.attr('string'), 
    title: DS.attr('string'), 
    owner: DS.belongsTo('user', {async:true}), 
}); 


App.ProfileSerializer = DS.RESTSerializer.extend({ 
    attrs:{ 
     photo: {embedded: 'load'} 
    }, 
}); 

的JSON通過本地主機返回:/ API /型材/是:

[ 
    { 
     "photos": [ 
      "media/pic3.jpeg", 
      "media/pic4.jpeg" 
     ], 
     "id": "5441b6b2bc8ae304d4e6c10e", 
     "first_name": "Dave", 
     "last_name": "Gordon", 
     "profile_pic": "media/profilePic.jpg", 
     "member_since": "2014-01-03T00:00:00", 
     "membership": "Silver", 
     "theme_pic": "media/profilePic.jpg" 
    } 
] 

正如我們所看到這裏,我想用掛鉤照片「路徑」字段的photo而不是id的照片。我似乎無法發送異步呼叫。是否有可能通過非id字段告訴ember進行異步調用。我覺得應該有一種方式,因爲我打算髮送一個基於自定義生成密鑰的異步調用。任何幫助是極大的讚賞。謝謝

回答

0

我不會認爲這是一種關聯,而只是另一種具有數組類型的屬性。

你應該能夠只是改變你的模型是這樣的:

App.Profile = DS.Model.extend({ 
    firstName: DS.attr(), 
    lastName: DS.attr(), 
    photos: DS.attr() 
}); 

那麼你應該能夠訪問屬性作爲模板數組(可能的對象)。

如果有必要,您可能需要創建一個自定義的轉換是這樣的:

App.ArrayTransform = DS.Transform.extend({ 
    deserialize:function(value) { 
     return value; 
    } 
}); 

然後,你可以這樣做:

App.Profile = DS.Model.extend({ 
    firstName: DS.attr(), 
    lastName: DS.attr(), 
    photos: DS.attr('array') 
}); 
+0

這種方式,我認爲對於嵌入式領域,即會工作,{嵌入式:'總是'}。但是,它是否適用於{embedded:'load'}?每個配置文件都有一組與其關聯的照片。這樣,我認爲不會進行異步調用。此外,如何獲取僅與特定配置文件相關的照片?謝謝 – 2014-12-03 01:55:00