질문입니다.
MVVM에서는 UI 상태와 Model 상태를 동기화 해주는 바인딩 메커니즘이 있기 때문에 UI 상태를 수동으로 갱신하지 않아도 되는 편리한 점이 있습니다.
하지만 Model이 변경되는 중에 UI에 반영되지 않았음 하는 상황도 발생하는데요, 대표적인 예가 정보를 수정하는 중입니다. 이것을 좀 더 시각적으로 이해할 수 있도록 간단한 도식을 만들어 봤습니다.
오른쪽 상단의 Chaning Status
중일 때는 View
의 Page 1
에 바인딩 된 Model
이 상태가 수정 중일 때 수정중인 내용이 반영되지 않고 최종 수정 완료하여 Commit
했을 때 반영하고 싶습니다.
(Commit 했을 때 각 상태를 히스토리로 남기는 Status 2, Status 3, Status 4
형태도 표현해 보았습니다.)
이런 구조를 우아하게 처리하는 방법론을 알고 싶습니다.
제가 지금까지 사용한 방법은 이렇습니다.
- 편집 상태가 되면 개체를 복사하여 편집한다.
- 편집을 완료(Commit)하면 복사한 개체를 원 개체에 반영한다.
- 편집을 취소(Rollback)하면 원 개체에 반영하지 않는다.
- Commit 히스토리는 별도로 관리한다.
여러분은 어떻게 처리하세요?