У меня проблема, похожая на этот вопрос о переполнении стека, за исключением того, что ответ, похоже, не работает. У меня есть форма, в которой пользователь создает модуль-контейнер с переменным количеством подмоделей. Когда форма отправлена, я должен сохранить контейнер, подмодели и убедиться, что отношение hasMany сохраняется. Мой код (с использованием Ember-Cli):
контейнер:
var Container= DS.Model.extend({
name: DS.attr('string'),
submodels: DS.hasMany('submodel'),
lastModified: DS.attr('date')
});
export default Container;
подмодель:
var Submodel= DS.Model.extend({
char: DS.belongsTo('container'),
name: DS.attr('string'),
desc: DS.attr('string'),
priority: DS.attr('number'),
effort: DS.attr('number'),
time: DS.attr('number')
});
export default Submodel;
ContainersNewRoute:
export default Ember.Route.extend({
model: function() {
return this.store.createRecord('container', {
...
});
}
});
ContainersNewController:
export default Ember.ObjectController.extend({
actions: {
addSubmodel: function() {
var submodels= this.get('model.submodels');
submodels.addObject(this.store.createRecord('submodel', {
...
}));
},
saveNewContainer: function () {
var container = this.get('model');
container.save().then(function(){
var promises = Ember.A();
container.get('submodels').forEach(function(item){
promises.push(item.save);
console.log(item);
});
Ember.RSVP.Promise.all(promises).then(function(resolvedPromises){
alert('all saved');
});
});
this.transitionToRoute(...);
}
}
});
Сами Ember Data работают нормально, переход к представлению созданного контейнера с перечислением подмоделей. Обновите страницу, и подмодели исчезнут из представления контейнера.
Я пробовал несколько вариантов, например, используя pushObject, а не addObject из ответа на переполнение стека. Я также пытался использовать обратный вызов Ember.RSVP для запуска container.save() во второй раз после сохранения подмоделей.
После некоторого дальнейшего тестирования я обнаружил, что подмодели вообще не сохраняются.
Есть ли разумный способ сохранить 1) контейнер 2) подмодели 3) отношения hasMany/belongsTo друг к другу?
Или это каким-то образом нужно разбить на отдельные шаги, где я сохраняю контейнер, сохраняю подмодели, помещаю подмодели в контейнер, чтобы получить отношение hasMany и повторно сохранять контейнер, и, наконец, сделать подмодели принадлежащими контейнеру и сохранить опять подмодели?