2013-01-04 7 views
2

저는 엠버 모델 라이프 사이클에 대한 모든 것을 이해하려고 애 쓰고 있습니다. 내 문제를 설명하기 위해 this jsfiddle을 만들었습니다. 목록의 항목 중 하나를 클릭 값을 편집하고, 클릭하면 버전 목록으로 돌아가 링크를, 나는 다음과 같은 오류 얻을 :Ember 모델 라이프 사이클 및 원래 상태로 되 돌아 가기

Uncaught Error: Attempted to handle event loadedData on while in state rootState.loaded.updated.uncommitted. Called with {}

이 원인이 무엇을? 개체 상태가 더러워졌지만 목록을 열 때 모든 개체를 강제로 새로 고칠 수 있습니까?

또한 폼이 저장되지 않은 경우 속성에 대한 모든 변경 사항을 취소하는 방법에 대한 제안 사항이 있습니까? 개체를 복제하고, 편집 폼에서 해당 복제본을 사용하고, 저장할 때 원본과 병합하려고 생각했습니다. 내가 처음 상상했던 것만 큼 쉽지는 않습니다.

최신 엠버 및 엠버 데이터 사용.

답변

3

@tchak를 사용하여 신속하게 토론 한 후 해결책은 버전 경로의 exit 함수를 재정의하고 현재 모델을 롤백하는 것일 수 있습니다.

App.VersionRoute = Ember.Route.extend({ 
    exit: function() { 
    var controller = this.controllerFor(this.templateName), 
     content = controller.get('content'); 

    if (content.get('isDirty')) { 
     content.get('transaction').rollback(); 
    } 
    this._super(); 
    } 
}); 
+0

마치 작동하는 것처럼 보입니다! 나는 엠버에 대해 배우기가 꽤있다. 답변을 수락하기 전에 더 많은 테스트를 수행합니다 :) 편집 : 나가기 만해도 링크를 통해 직접 목록으로 돌아 가면 종료 방법이 실행됩니다. 굉장해. – rallrall

+1

잘 작동하는 것이 좋습니다. :) /version/1에서 페이지를 새로 고치면 빈 페이지가 나타납니다. 두통이 생기기 전에, Fixtures의 ID를 정수가 아닌 String으로 변경하십시오. –

관련 문제