Как работать с 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();
}



Спасибо!


Ответы (0 шт):