2013-03-05 10 views
6

Mam osoba model następującoJak odjechać na bok?

App.Person= DS.Model.extend({ 
     id: DS.attr('string'), 
     name: DS.attr('string'), 
     visits: DS.hasMany('App.Visit'), 
     events: DS.hasMany('App.Event') , 
     allergies: DS.hasMany('App.Allergies'), 
     get_allergies : function(){ 
    return this.get('allergies').getEach('allergy_name').reduce(function(accum, item) { 
     return (accum.length > 0) ? (accum +', '+ item) : (item); 
    }, ''); 
    }.property('[email protected]_name')  
    }); 


App.Visit = DS.Model.extend({ 
    visit_id: DS.attr('string'), 
    date: DS.attr('date'),  
    admission: DS.belongsTo('App.Admission') 
}); 

App.Admission = DS.Model.extend({ 
    loc: DS.attr('string'), 
    admission_date: DS.attr('date'), 
    care_team: DS.belongsTo('App.CareTeam') 
}); 

Jak widać Osoba hasMany „alergie”, a wraz z osobą, alergii jest także uzyskiwanie ładowane dla mnie, bo w interfejsie Wołam metodę get_allergies podczas gdy inne hasMany relacje typu "wizyty" i "wydarzenia" nie są ładowane.

W interfejsie {{person.get_allergies}}

Próbowałem sideload relacje "wizyt" i "Wydarzenia" (używając na przykład netto), ale to nie działa? Czy ktoś może powiedzieć, jaki jest właściwy sposób usuwania danych z ember, ponieważ nie mogłem znaleźć żadnej odpowiedniej dokumentacji z przykładem w sieci, z wyjątkiem kilku pytań dotyczących samego stackoverflow?

+0

może cię pokazać model App.Admission powyżej? jak wygląda json zarówno w przypadku modeli przyjmowania, jak i odwiedzin, jeśli ręcznie uderzysz w punkty końcowe REST? –

+0

@ToranBillups zaktualizował (a) pytanie – Swapnil

+0

Witam Torana, zaktualizowałem pytanie ... Po prostu chcę mieć dobry przykład odsyłania do relacji w ember-data – Swapnil

Odpowiedz

4

Zgodnie z należy po prostu dodać dodatkowe dane dotyczące odwiedzin i zdarzeń w odpowiedzi z serwera.

{ 
    "person": { 
    "id": 1, 
    ... 
    "event_ids": [5, 6, 7] 
    }, 

    "events": [{ 
    "id": 5, 
    ... 
    }, 
    { 
    "id": 6, 
    ... 
    }, 
    { 
    "id": 7, 
    ... 
    }] 
} 

Najważniejsze jest to, że dane o zdarzeniach powinny znajdować się poza danymi osoby.

Czy używasz standardowego adaptera REST? Czy mógłbyś dodać przykładowy json zwrócony przez serwer?

4

Aby przesłać dane w mojej aplikacji, konfiguruję dane ember, aby wiedzieć, jakie rzeczy będę robić na bieżąco. Na przykład. do sideload imprez i wizyt, to zrobić:

DS.RESTAdapter.configure('App.Event', { 
    sideloadsAs: 'events' 
}); 

DS.RESTAdapter.configure('App.Visit', { 
    sideloadsAs: 'visits' 
}); 

App.Store = DS.Store.extend({ 
    revision: 11 
}); 

a następnie w json może wyglądać następująco:

{ 
    "person": { 
    "id": 1, 
    "event_ids": [5, 6, 7], 
    "visit_ids": [1, 2, 3] 
    }, 

    "events": [ 
    { "id": 5 }, 
    { "id": 6 }, 
    { "id": 7 } 
    ], 

    "visits": [ 
    { "id": 1 }, 
    { "id": 2 }, 
    { "id": 3 } 
    ] 
} 
0

miałem ten sam problem, ale ustawić się nieco inaczej. visits były nieświadome ich person (tj. Nie mogły wykonać visit.get('person.name')). Musiałem dodać serializatora dla visit:

export default AppSerializer.extend({ 
    attrs: { 
    person: 'personId' 
    }, 
}); 

Moja ładowność wygląda następująco:

{ 
    person: { 
    id: 1, 
    name: 'John', 
    visitIds: [1, 2, 3] 
    }, 

    visits: [ 
    { id: 1, 
     personId: 1 
    }, 
    { id: 2, 
     personId: 1 
    }, 
    { id: 3, 
     personId: 1 
    } 
    ] 
} 

person model:

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    visits: DS.hasMany('visit') 
}); 

visit model:

export default DS.Model.extend({ 
    person: DS.belongsTo('person') 
}); 
Powiązane problemy