내 API 위에 Ember 앱을 만들고 있는데, 잘못된 레코드로 인해 저장에 실패하더라도 Ember가 내 템플릿을 업데이트하는 이유가 궁금합니다 (예 : API가 422) : API가 어떤 값을 허용하지 않기 때문에 save()가 실패하면 ember가 템플릿을 업데이트하지 못하도록합니다.
data.set('name', 'some_invalid_stuff');
data.save().then(function() {
// close modal
_this.closeForm();
// disable editing mode
_this.set('isEditing', false);
}, function (response) {
_this.set('errors', response.errors);
data.rollback();
});
내가 data.rollback();
을 주석
data.rollback();
의 문제는 이상한 깜박임입니다. 첫째, 레코드가 템플릿에서 업데이트되지만 몇 밀리 초 후에
rollback
이 실행되고 이전 데이터로 템플릿이 업데이트됩니다.
특히 알파벳순으로 목록을 정렬하는 경우이 "이중 업데이트"는 매우 성가시다.
save()
이 실패 할 때 템플릿 업데이트를 방지하는 방법이 있습니까?
실제로 템플릿은 data.set('name', 'some_invalid_stuff');
이후 즉시 업데이트됩니다.
나는 최신 안정 Ember 릴리스 (1.5.1)와 최신 Ember-Data의 Canary 버전을 사용하고 있습니다 (그러나 최신 Beta 버전도 시도했습니다).
맞습니다. 훨씬 더 많은 클라이언트 측 유효성 검사를 추가해야합니다. 그럼에도 템플릿 업데이트가 필요하지 않은 시나리오가 있습니다. 예 : 같은 이름의 다른 레코드가 있으면 서버가 유효성을 검사 할 때. 그런 다음 템플릿은 곧 422 서버 오류 후 '잘못된'이름과 롤백을 설정합니다. 클라이언트 쪽에서 처리 할 수없는 몇 가지 유효성 검사가 있으며 "깜박임"템플릿 업데이트는 실제로 나빠질 것입니다. 템플릿에 '더티 (dirty)'레코드를 업데이트하지 못하게 할 수 있습니까? 정말 멋질거야. – Slevin