Pregunta

Estoy pensando en una implementación de MVP - Patrón de visión pasiva en JavaScript.En la mayoría de los casos, la opinión será simples elementos DOM donde el presentador adjunte los oyentes de eventos.Pero cuando se trata de widgets, como JavaScript, basado en Pseudo SelectBoxes, Auto Sugerir o Características de Aria, ¿debería ser parte de una clase de vista de JavaScript o si la lógica cambiará la vista de la vista del presentador? He mirado el vista de javascriptmvcs y parece que solo son plantillas generadas html sinCualquier lógica.Pero para mí parece que no parece diferente entre un presentador que es escuchado a HTML SELECTBOX y uno que escucha un pseudo selecto con la lógica de JavaScript para imitar un cuadro de selección real.Ambos no deben preocuparse por la forma en que funciona la caja internamente, solo tienen que escuchar el evento de cambio.

Entonces, qué piensa.¿Cuál es el trabajo de la clase de vista?

¿Fue útil?

Solución

El trabajo de la vista es como una adaptador a la tecnología de la vista. En este caso, su tecnología es probable que sea probable jquery sobre HTML a través de JavaScript. La vista debe estar diseñada para hacer tres cosas:

  • Saber cuándo ocurren los eventos, y comunicar estos eventos al presentador (esto puede ser indirectamente, utilizando un marco de mensajería como POSTAL.JS )
  • Dile al presentador (cuando se le pregunta) "cuál es el valor de x " donde x es un valor representado en la vista.
  • Aceptar mensajes del presentador (generalmente a través de una llamada de método directo) para cambiar los valores en la vista.

Una vista en el patrón de vista pasiva es no estatal . Repito, una vista no representa el estado . Lo que quiero decir con esto es que todo el estado y el conocimiento de la transición estatal están representados por el presentador. La vista es simplemente el pegamento que proporciona indirección entre el presentador y la tecnología de vista real. Más allá de los tres puntos de bala anterior, no encapsula ningún conocimiento de qué hacer con la información que contiene . Esto es importante, porque nunca debe esperar que se encuentre en un estado consistente. Siempre debe mantener al presentador responsable de administrar el estado de la vista.

ingrese la descripción de la imagen aquí

La pila anterior demuestra cómo prevé el modelo, la vista y el presentador interactuando, así como su relación con la tecnología de la vista y el controlador.

  • El navegador, HTML y DOM (gestionado a través de jQuery) son la view tecnología . Estos son inherentemente complejos, e incapaces de representar su modelo.
  • la view protege su lógica de la Ver tecnología . Proporciona indirección para que pueda centrarse en un código antiguo en su presentador . La vista debería usar algún tipo de mensajería para comunicarse con el presentador. Esto evita una dependencia bidireccional entre la vista y el presentador. También permite que varios presentadores manipulen una vista.
  • El presentador debe ser responsable de comprender la naturaleza abstracta de la vista, y debe administrar el estado model en función de su interfaz a la vista. Es capaz de comprender cómo recuperar un modelo del Contoller, y cómo persistir en el modelo al servidor.
  • El modelo es una representación del estado en un punto específico de en el tiempo . También puede servir como una DTO entre el controler y el presentador . En JavaScript, es fácil y, a veces, preferible simplemente agregar un comportamiento del presentador al modelo .
  • El controlador coordina la navegación dentro de la aplicación, y es responsable de abstraer los servicios de back-end de la presentación.

Otros consejos

El objeto VER debe ser responsable de dibujarse.Una visión pasiva sabe cómo para hacer cosas, no qué hacer.Debe ser responsable de disparar sus propios eventos.Solo porque es un widget de selección personalizado, no lo hace diferente a un cuadro de selección regular.

Si el presentador se hizo cargo de todas las responsabilidades de las vistas, entonces no hay necesidad de una vista en absoluto.También podría tener solo un presentador.

Las vistas de

javascriptmvc son plantillas laterales del cliente ficticio.Sus controladores de nodos tienden a asumir un papel de vista más tradicional.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top