将音频播放器分解为MVC结构

时间:2016-08-19 17:23:35

标签: javascript model-view-controller

想象一下,音频播放器可以完成三件事:

  • 操纵和创建数据(进度长度,时间转换,体积计算等)
  • 收听用户互动/输入并触发数据操作或gui组件的可见性
  • 在屏幕上显示和更新gui组件。

在MVC中你会把上面的哪一个放在哪里?

我在想: - 首先是模型的一部分 - 第二个控制器 - 第三个视图

然而,我不完全确定为什么我要问。

1 个答案:

答案 0 :(得分:1)

数据操作和创建应由模型处理。

视图将是实际的GUI,包含所有控件,如播放/暂停/音量等。每个控件都有与之关联的事件,例如play_click,pause_click,volume_up等。

演示者将拥有这些视图事件的事件处理程序。每当事件发生时,相关的处理程序将执行,从而根据需要更改模型和/或视图。

例如,如果模型包含volume属性,并且视图引发volume_up事件,则演示者中的onVolume_up事件处理程序将执行,从而导致{{1}要递增的模型的属性,并相应地更新视图。

请注意,演示者不依赖于视图。因此,明天您可以更改整个GUI,而无需触摸演示者或模型。

您可以自己手动设置所有这些内容,也可以使用Knockoutjs等框架。