Ember-Data 거래에 문제가 있습니다.Ember-Data 거래 오류
나는, 그것은 나중에과 같이 시작된다 그리고 이렇게
App.MyModel = DS.Model.extend({
id: DS.attr(),
answers: DS.hasMany('App.Answer') // another model
});
같은 DS.Model을 가지고있는 라우트
model: function(){
var transaction = this.get('store').transaction();
return transaction.createRecord(App.MyModel, {
id: '1'
});
}
내 백 엔드에 요청을하게하는 모델을 트랜잭션을 사용하고 커밋하는 서버.
this.get('content.transaction').commit();
답변이 서버 측에서 업데이트되어 다시 전송되도록합니다. 컨텐츠가 아직 업데이트되지 않은 경우 , 나는이
this.get('content').reload();
전화 요청이 다시 전송됩니다.
이 모든 것이 정상적으로 작동합니다. ID가 발견되면 답변이 채워집니다.
제 문제는 때로는 서버에서 무엇을 얻 느냐에 따라 다른 서버 요청을해야한다는 것입니다. 초기 요청이
this.get('content.transaction').commit();
와 함께 잘 작동하지만 트랜잭션을 다시로드 할 때
Uncaught Error: Attempted to handle event `loadedData` on <App.Answer> while in state rootState.loaded.updated.uncommitted. Called with undefined
내가 다시로드를 제거 할 때 지금, 나는 더 이상 오류가 발생하지 않습니다를 다음과 같이 나는 오류가 발생, 또한 네트워크 탭에서 Chrome 콘솔을 확인하면 원하는 결과가 다시 전송되지만 내 DS 모델에서 업데이트되지 않는 것을 확인할 수 있습니다. 대답은 정의되지 않은 상태로 남습니다.
왜 이런 일이 발생하는지 알고 계십니까? 거래를 잘못 사용하고 있습니까? 내 모델을 설정하고 내용을 설정하는 내 경로에서 수행에
편집
Application.SearchController = Ember.ObjectController.extend({
isComplete: function() {
return this.get('content.answers.length') !== 0;
},
search: function() {
this.get('content.transaction').commit();
var record = this.get('content');
var interval = setInterval(function (controller) {
if (controller.get('isComplete')) {
controller.transitionToRoute("search.view");
clearInterval(interval);
} else {
record.reload();
}
}, 5000, this);
}
});
SO 기본적으로 몇 가지 작업이 모델은 서버 측에서 사용 및 전송됩니다 id를 가지고 다시 검색 결과와 함께 "답변"에 추가됩니다.
이 결과는 여러 개의 결과가 나타날 때까지 유효합니다. 그런 다음 새 모델이 만들어지고 검색 기능이 다른 콘트롤러에서 다른 콘텐트로 다시 호출됩니다. 이번에는 라인상에서 record.reload();
오류가 발생합니다. 오류가 발생했습니다 : rootState.loaded.updated.uncommitted 상태 인 동안 loadedData
이벤트를 처리하려고 시도했습니다. 정의되지 않은 상태로 호출 됨
따라서 서버는 여전히 올바른 결과를 반환하지만 클라이언트 측에서 "답변"은 업데이트되지 않습니다.
나는 Crowhurst 씨를 시도했지만 작동하지 않았다. – johnjo
당신은 결국 Crowhurst 씨에게 맞았다. 나는 라우터를 다시해야했다. – johnjo