【问题标题】:How should the model communicate?模型应该如何沟通?
【发布时间】:2013-08-28 09:16:28
【问题描述】:

我正在设计一个涉及编辑基于文本的文件的 JavaScript 应用程序(又名代码编辑器)。目前,我正在研究应用程序的文件资源管理器区域。我把它分成了三个 MVC 部分。

  1. 视图,它管理 DOM 结构(主要通过 jQuery)并将用户交互发布到我的应用程序中介。 (例如,用户点击“添加文件”,视图会询问名称,然后使用新名称触发“files.new”事件。)

  2. 控制器。控制器将接收视图触发的大部分事件。据我了解,控制器应该负责更新模型。例如,如果视图使用新名称触发“files.nameChanged”事件,控制器将通过更新模型来处理该事件。

  3. 模型。目前,该模型仅限于原始数据。没有事件或任何类型的 api。这让我想到了我的问题:

模型应该如何沟通?我考虑过公开一个 API,例如 model.updateRecord()。但是如果我这样做,视图如何传达应该更新哪个记录?例如,如果用户更改了文件的名称,控制器如何知道哪个文件被更改,以及如何将其传达给模型?

【问题讨论】:

  • 听起来你像很多人一样错过了模型的一点 - 模型是一个抽象概念 MVC 中没有模型,但有服务,所以你需要某种DataMapper
  • @DaveJust 对我来说听起来不错,但问题仍然在于......“数据模块?”应该与应用程序的其余部分进行通信,或者更具体地说,与视图模块进行通信。

标签: javascript model-view-controller


【解决方案1】:

为了扩展 Dave Just 的评论,模型是一个层。模型层由服务、领域对象和数据映射器组成。请参见下面的图表。注册表不是模型层的一部分,它是我在完成我的框架之前添加的,它不在正确的位置或在图中没有准确的描述,但我不确定它是否适用于 JavaScript 框架。

图片链接: http://i.stack.imgur.com/5ENyB.jpg

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 2011-01-15
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多