Q9. 도메인(Model)과 UI(View)는 어떤 기준으로 분리해야 하나요?
선배 크루의 질문
“View가 Model을 직접 참조해도 되나요? View와 Model은 서로를 몰라야하고, 오직 Controller에 의해서만 가능하다라고 알고 있었는데” — PR #90 (링크 )
“view이벤트, 로또구매나 토글 버튼의 이벤트 리스너를 controller vs view 어디에서 등록하는 것이 옳은지 고민했습니다” — PR #87 (링크 )
“Controller의 역할이 너무 커지는데 어떡하나요?” — PR #84 (링크 )
AS-IS 코드
class LottoView {
onSubmitMoney(event) {
event.preventDefault();
const money = Number(this.moneyInput.value);
if (money < 1000) {
alert('1000원 이상 입력하세요.');
return;
}
const lottoCount = Math.floor(money / 1000);
const lottos = [];
for (let i = 0; i < lottoCount; i++) {
lottos.push(this.generateLotto());
}
// DOM 조작
this.lottoCountLabel.textContent = `총 ${lottoCount}개를 구매했습니다.`;
lottos.forEach((lotto) => this.renderLottoItem(lotto));
}
generateLotto() {
const numbers = new Set();
while (numbers.size < 6) {
numbers.add(Math.floor(Math.random() * 45) + 1);
}
return [...numbers].sort((a, b) => a - b);
}
}Last updated on