Javascript MVC: метод модели, вызываемый внутри контроллера, возвращает неопределенный -> но почему? - PullRequest
2 голосов
/ 02 апреля 2020

Я изучал javascript и пытался использовать MVC. Я заметил проблему, и я не мог найти ответ на вопрос, почему, в любом месте. Проблема заключается в следующем:

У меня есть класс Модель следующим образом в model.js:

export default class Model {
    constructor() {}

    speak(word) {
        return word;
    }
}

и контроллер (controller.js):

import Model from './model.js';

export default class Controller {
    constructor() {
        this.model = new Model();
    }

    speak(word) {
        this.model.speak(word);
    }
}

I Я только явно пишу экспорт и импорт здесь, так как у меня есть это в моем приложении, и я хочу, чтобы этот пример кода максимально отражал мою проблему c. У меня есть отдельные файлы для каждого класса или компонента. Во всяком случае, позже, в моем главном AppController, у меня есть

import Controller from './controller.js';

const controller = new Controller();
console.log(controller.speak('Hi'));

Последняя строка всегда возвращает undefined, независимо от того, что я возвращаю, будь то, как в этом случае, простая строка или любой атрибут модельного класса. Я знаю, когда я делаю это:

controller.model.speak('Hi');

Тогда все в порядке. Поэтому мой вопрос не в том, как ее решить, а в том, почему это происходит? Большое спасибо за ваши ответы.

Ответы [ 3 ]

3 голосов
/ 02 апреля 2020

Вам нужно заставить Controller.speak вернуть значение.

speak(word) {
    return this.model.speak(word);
}
1 голос
/ 02 апреля 2020

Вы не вернули результат из функции говорить () контроллера.

0 голосов
/ 02 апреля 2020

controller.model.speak('Hi') вместо этого, если вы напишите console.log(controller.model.speak('Hi'));, вы увидите, что Hi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...