Как работать с MVC если нужны данные со многих Model и выводы во множественные View
Только начал осваивать MVC. Нахожу уроки только простого использования с одним контроллером. Но что делать если нужно получить данные из модели одного контроллера в другой.
Сейчас я делаю конвертацию текста в речь. В модели данные текста, который нужно произнести. Во вью - функции для произношения и остановки речи.
Я хочу так же остановить речь, когда нажата кнопка назад на странице. Клик по ней обрабатывается в pageController.
Мне приходит в голову это:
1. Добавить функции в контроллер конвертации речи для старта как во вью и вызывать их, подключив speakerController в pageController.
2. Использовать множество model и view в контроллерах.
Как лучше это реализовать?
speakerController:
constructor(view, model) {
this.view = view;
this.model = model;
}
init() {
const btn_speaker = $(".btn_speak_info")[0];
this.btn_speaker = btn_speaker;
btn_speaker.addEventListener('click', () => {
this.onClickBtnSpeak(btn_speaker, event);
});
}
onClickBtnSpeak(btn_speaker, event) {
// Don't close panel after click speak button.
event.preventDefault();
if (this.model.is_speaking_now) {
this.view.stopSpeak();
}
else {
this.view.speak();
}
}
setTextForSpeech(text) {
this.model.text_to_speak = text;
}
speakerModel:
constructor() {
this.text_to_speak = "";
this.is_speaking_now = false;
}
speakerView:
constructor() {
}
speak(text) {
const message = new SpeechSynthesisUtterance();
message.lang = "en-US";
message.text = text;
window.speechSynthesis.speak(message);
return message;
}
changeSpeakButtonText(btn_speaker, text) {
btn_speaker.innerText = text;
}
stop() {
window.speechSynthesis.cancel();
}
Спасибо!