2015-05-21 5 views
0

У меня проблема с определением отношений между моими моделями, чтобы получить каскадное свойство. Я хотел бы, чтобы MapLineString удалялся, когда Trail был удален или Draw удален. Но я НЕ хочу, чтобы Trail был удален при удалении MapDraw или MapLineString.ember-data: отношения между родителями/детьми

Отношения между моделями:

Trail может иметь один трейлер одна команда и один MapDraw

MapDraw может иметь много MapLineString

MapLineString может относится к Trail И/ИЛИ MapDraw

Trail = DS.Model.extend({ 
    Trailer: DS.belongsTo('mapLinestring', {async: true, inverse: 'trail'}), 
    Team: DS.belongsTo('mapLinestring', {async: true, inverse: 'trail'}), 
    mapDraw: DS.belongsTo('mapDraw', {async: true}), 
}); 

MapDraw = DS.Model.extend({ 
    lineStrings: DS.hasMany('mapLinestring', {async: true}), 
    trail: DS.belongsTo('mtgTrail') 
}); 

MapLineString = DS.Model.extend({ 
    trail: DS.belongsTo('mtgTrail'), 
    mapDraw: DS.belongsTo('mapDraw'), 
}); 

Утверждение не выполнено: вы определили отношение «trail» на mantrailling @ model: map-linestring :, но вы определили обратные отношения типа mantrailling @ model: mtg-trail: несколько раз. Посмотрите на http://emberjs.com/guides/models/defining-models/#toc_explicit-inverses для того, как явно указать обратные

+0

ваше использование a, b и c для определения attrs и моделей не делает для легкого понимания проблемы. – Craicerjack

ответ

0

Глядя на то, котор вы написали в начале поста он звучит как
А должно быть:

export default DS.Model.extend({ 
    bees: DS.hasMany('B', {async: true, inverse: 'abees'}), 
    cees: DS.hasMany('C', {async: true}), //doesnt need an inverse as you are getting all the ones that belong to A 
});  

B должен быть:

export default DS.Model.extend({ 
    cees: DS.hasMany('C', {async: true, inverse: 'bcees'}), 
    abees: DS.belongsTo('A') 
});  

, а затем в C у вас есть две свойства модели, называемые то же самое

export default DS.Model.extend({ 
    acees: DS.belongsTo('A'), 
    bcess: DS.belongsTo('B') 
});  

Ваши соглашения об именах также делают его довольно запутанным. Почему бы просто не назвать атрибуты моделей чем-то, что имеет отношение к тому, что они представляют?

+0

ОК, извините, я хочу сделать проще, я отредактирую свой пост –

0

Хорошо, я выяснил, в чем проблема. Я использую адаптер Localstorage, который не работает с {async: true}. Записи не сохранялись на родительской стороне.

Смежные вопросы