我正在考虑在JavaScript中的MVP - 被动视图模式的实现。在大多数情况下,视图将是演示者附加事件侦听器的简单DOM元素。但是,当涉及基于JavaScript的伪选择盒等窗口小部件时,如果这是JavaScript View类的一部分,或者应该将逻辑更改视图是演示者的一部分吗? 我看过 javascriptmvcs视图,似乎它们只是模板生成的html没有任何逻辑。但对于我来说,似乎没有什么不同的,它在侦听HTML SelectBox和Histening与JavaScript Logic上的一个人来模仿真正的选择框。两者都不关心盒子如何在内部工作,他们只需要倾听更改事件。

所以你觉得怎么样。什么是查看类的工作。

有帮助吗?

解决方案

视图的作业是适配器到视图技术。在这种情况下,您的视图技术可能通过JavaScript通过HTML jQuery。视图应设计为执行三件事:

  • 知道事件何时发生,并将这些事件传送到演示者(这可能是间接的,使用消息传递框架,如 Postal.js
  • 告诉演示者(当被问及时)“ x 的值是什么,其中 x 是视图中表示的值。
  • 接受来自演示者的消息(通常通过直接方法调用)来更改视图上的值。

在无源视图模式中的视图是 not状态。我重复,一个视图不代表状态。我的意思是,国家转型的所有状态和知识由演示者代表。该视图简直就是在演示者和实际视图技术之间提供间接的胶水。 超出上面的三个子弹点,它不会封装任何对其包含的信息的知识。这很重要,因为你永远不应该指望在一个持续的状态下。您应该始终持有负责管理视图状态的演示者。

上面的堆栈演示了我如何预见模型,视图和演示者的交互,以及它们与视图技术和控制器的关系。

  • 浏览器,html和dom(通过jQuery管理)是查看技术。这些本质上是复杂的,无法代表您的模型。
  • 视图保护您的逻辑免受查看技术。它提供间接,以便您可以专注于 spepter 中的普通旧代码。查看应该使用某种消息来才能与演示者进行通信。这可以防止视图和演示者之间的双向依赖性。它还允许多个演示者操纵视图。
  • presenter 应负责理解视图的抽象性质,并应基于其对视图的接口来管理 model 的状态。它能够了解如何从conderer检索 model>,以及如何将 model 返回服务器。
  • model 特定时间点的状态的表示。它还可以作为 controller spepter 之间的DTO。在JavaScript中,很容易,有时候可以简单地将演示者行为添加到 model 上。
  • controller 协调应用程序中的导航,并负责从演示文稿中抽象后端服务。

其他提示

视图对象应负责绘制自身。一个被动的视图知道如何做事,而不是是什么要做。它必须负责射击自己的事件。仅仅因为它是一个自定义选择框窗口小部件不会使其与常规选择框不同。

如果演示者接管了所有观点职责,那么根本不需要一个观点。也许只有一个演示者。

javascriptmvc的视图是虚拟客户端侧模板。它的节点控制器倾向于接受更传统的视图角色。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top