В MVC как соединить событие через View и добавление в Module? Добрый день Собственно весь вопрос в заголовке, у меня есть кнопка написана через HTML, есть View и есть Module с пустым массивом, как через Controller я по клику могу добавить что либо в массив модуля, допустим вот моя View, которая возвращает число:export class View addItem() let plus = document.querySelector('.plus') plus.addEventListener('click', () => let num = document.querySelector('.count').innerHTML return num }
Вот мой Модуль с функцией addNum, которая собственно и должна добавлять число в массив:export class Module constructor() this.num = []
addNum(num) this.num.push(num)
А вот Controller:class Controller constructor(view, module) this.view = view this.module = module
getNum() this.cart.addNum(this.view.addItem())
Проблема в том, что когда я вызываю функцию контроллера getNum, она срабатывает моментально, как мне дождаться какого либо события Надеюсь все ясно объяснил, спасибо!
Для того чтобы дождаться какого-либо события, вы можете использовать промисы или колбэки. В вашем случае, можно передать функцию обратного вызова в метод addItem() и вызвать эту функцию при событии 'click'.
Ниже пример, как вы можете изменить ваш код:
View:class View addItem(callback) let plus = document.querySelector('.plus') plus.addEventListener('click', () => let num = document.querySelector('.count').innerHTML callback(num) })
Для того чтобы дождаться какого-либо события, вы можете использовать промисы или колбэки. В вашем случае, можно передать функцию обратного вызова в метод addItem() и вызвать эту функцию при событии 'click'.
Ниже пример, как вы можете изменить ваш код:
View:class View
addItem(callback)
let plus = document.querySelector('.plus')
plus.addEventListener('click', () =>
let num = document.querySelector('.count').innerHTML
callback(num)
})
}
Controller:class Controller
getNum(num)constructor(view, module)
this.view = view
this.module = module
this.view.addItem(this.getNum.bind(this))
}
this.module.addNum(num)
}
}
Теперь при клике на кнопку с классом 'plus', будет вызываться метод getNum() контроллера, который добавит число в массив модуля.