면책 조항 :이 jsfiddle 만들려고했지만 RESTAdapter 공용 소스없이 실제로 작동하도록 만들 수 없습니다.상위 모델에 새로운 많은 관계를 추가하는 방법은 무엇입니까?
나는 hasMany 자식 모델 배열을 가진 모델을 가지고 있습니다. 이 하위 배열에 새 모델을 추가하고 서버에 저장해야합니다.
App.FooModel = DS.Model.extend({
'name': DS.attr('string'),
'bars': DS.hasMany('App.BarModel')
});
App.BarModel = DS.Model.extend({
'name': DS.attr('string'),
});
App.ApplicationController = Ember.Controller.extend({
init: function() {
var foo = App.FooModel.find(101); // -- currently has bars[201, 202, 203]
var newBar = loadFixture(App.BarModel, 204);
var self = this;
setTimeout(function() { // -- just to be sure our models are loaded before we try this
// foo.currentState: saved
foo.get('bars').addObject(newBar);
// foo.currentState: saved
foo.store.commit(); // -- nothing happens
}, 1000);
}
});
App = Ember.Application.create({
store: DS.Store.create({
revision: 11
})
});
아무 일도 일어나지 않습니다. 부모 모델이 더티로 표시되지 않으므로 저장소가 커밋을 시도하지 않습니다. 이 관계를 부모에게 추가해야하는 다른 방법이 있습니까? 이거 버그 야?
현재 해결 방법 :
foo.get('bars').addObject(newBar);
var save = foo.get('name');
foo.set('name', (save + '!'));
foo.set('name', save); // -- this marks our record as dirty, so a save will actually happen
foo.store.commit();
편집 1 : 나는 그것이 (https://stackoverflow.com/a/15145803/84762)로 시작하는 내장 된 경우 엠버 데이터는이 데이터를 직렬화 것을 알고 있어요,하지만 난 내를 재정의 이것을 처리하는 직렬화 기. 내가 가지고있는 문제는 상점이이 변경 사항을 저장하려고 시도조차하지 않으므로 우리가 시리얼 라이저에 도달하지 못한다는 것입니다.
편집 2 : 나는이 this bug와 함께 할 수있는 뭔가가이 힘을 의심하지만, 같은에서 그이 누군가를 위해 작동하지 않을 것입니다 의미와 나는 다른이로 실행 한 아무도 믿지 않는다 힘든 시간을 , 아직.
하지만했다. 그들이 둘 다 일하지 않았다는 것이 이상해 보입니다. 어쩌면 나는'belongsTo'에 대해서 뭔가 잘못된 일을했을 수도 있습니다. 어쨌든, 고마워요 - 아이와의 관계를 추가하는 것이 트릭을 한 것 같습니다. 나는 어딘가에 hasMany/null relationship/inverse가 지원되었다는 것을 기억하는 것 같습니다. 그렇지 않다면 계획이 있습니까? 내 특별한 경우, 자식'bar' 객체는 응용 프로그램에서 * 어디에서나 사용됩니다. 부모 객체를 저장하기 위해 자식 객체에 25 가지 다른 관계를 추가하고 싶지는 않습니다. – KOGI
Github에는 inverse-null 브랜치가 있습니다. 아마 그들은 그것을 향해 일하고 있습니까? https://github.com/emberjs/data/tree/inverse-null – commadelimited
OP에 링크 된 SO 질문에 대한 의견도 남겼습니다. 너가 그것을 검사 할 수 있으면, 그것은 좋을텐데! – KOGI