我正在考虑在JavaScript中实现MVP - 被动视图模式。在大多数情况下,视图将是简单的dom元素,其中演示者附加事件侦听器。但是,当涉及到基于JavaScript的伪选择框,自动建议或aria功能等小部件时,它应该是JavaScript视图类的一部分还是更改视图的逻辑应该是演示者的一部分? 我查看了javascriptMVCs view,似乎它们只是模板生成的html而没有任何逻辑。但是对于我来说,一个听html选择框的主持人和一个用javascript逻辑来模仿一个真实选择框的伪选择框之间似乎没有什么不同。两者都不应该关心盒子如何在内部工作,他们只需要听取改变事件。
那你觉得怎么样?什么是观点课的工作。
答案 0 :(得分:2)
View对象应该负责绘制自己。被动视图知道如何来做事情,而不是做什么。它必须负责解雇自己的事件。仅仅因为它是一个自定义选择框小部件,它与常规选择框没有任何区别。
如果演示者接管了所有视图职责,则根本不需要视图。不妨只有一位主持人。
答案 1 :(得分:1)
JavaScriptMVC的视图是虚拟客户端模板。它的节点控制器倾向于采用更传统的View角色。
答案 2 :(得分:1)
视图的工作是视图技术的adapter。在这种情况下,您的视图技术可能是通过JavaScript的jQuery over HTML。该视图应该设计为做三件事:
被动视图模式中的视图是非状态。我再说一遍,视图不代表州。我的意思是,所有状态和状态转换的知识都由演示者表示。视图只是在演示者和实际视图技术之间提供间接的粘合剂。 除了上面提到的三个要点之外,它并没有包含任何有关如何处理其所含信息的知识。这很重要,因为您永远不应期望视图处于一致状态。您应该始终让演示者负责管理视图的状态。
上面的堆栈演示了我如何预见模型,视图和演示者的交互,以及它们与视图技术和控制器的关系。