【问题标题】:How to use a controller from another controller in MVC如何在 MVC 中使用来自另一个控制器的控制器
【发布时间】:2021-12-28 08:40:45
【问题描述】:
我是 MVC 的初学者。
我正在创建一个通过 MVC 模式将文本转换为语音的逻辑。
我有扬声器控制器、扬声器视图、扬声器模型。
控制器将文本从模型传输到要朗读的视图。
此外,按相同的按钮,发音停止。
但我还有另一个控制器负责页面逻辑。
如果用户按下后退按钮,那么发音应该停止。实现这一点的最佳方法是什么?
从另一个控制器调用扬声器控制器是否正确,或者控制器之间的连接是不允许的,需要以另一种方式完成?
谢谢
【问题讨论】:
标签:
javascript
model-view-controller
【解决方案1】:
从 pageController 内的 speakerController 调用方法完全没有问题。
我从您的描述中了解到,您希望 speakerController 拥有真正的处理逻辑。在正确的实现中,应该有一个名为 speakerService 的服务,它至少具有以下两种方法:
function play() {
// .. method logic
}
function stop() {
// .. method logic
}
这个服务可以被任何控制器(包括speakerController)调用。
请记住,这不是一项义务,您也可以将所有服务逻辑保存在 speakerController 中,其行为类似于 speakerService
在您的 pageController 中,您将拥有一个在拦截后退按钮单击事件后触发的方法,如下所示:
function onClickBackBtn($event) {
// .. rest of the logic
speakerService.stop(); // <-- call to the external speakerService method
}