En Puremvc, ¿dónde está el lugar correcto para poner el oyente del teclado que controla una vista?

StackOverflow https://stackoverflow.com/questions/4808763

Pregunta

Estoy obteniendo una experiencia PuremVC y quiero usar comandos de teclado para controlar mi vista. El resto de la aplicación no necesita saber qué está haciendo esta opinión.

¿Debo ponerlos directamente en la vista, o deberían ser otro lugar y que la vista sea notificada utilizando una notificación cuando se presiona una tecla?

¡Gracias!

¿Fue útil?

Solución

Como dijiste, tienes dos alternativas: poner a algunos oyentes en la clase View.MXML, o para poner a los oyentes en una clase general.

1 -ST: este parece ser el enfoque normal, no se necesitan más explicaciones, cada programador hará lo mismo.

El enfoque 2-ND es más interesante. Si tiene muchas vistas, escuchando eventos de teclado, comenzará a usar algo como

public class EnterButtonPressed extends SimpleCommand 
{
  function execute(...):void
  {
    //do something with the model, and then notify the view
  }
}

Pero después de agregar más vistas que se supone que deben escuchar Enter clave tu clase terminará así

public class EnterButtonPressed extends SimpleCommand {
  function execute(...):void
  {
    switch(viewType)
    {
      case view1:
        //do something with the model, and then notify view1
        break;
      case view2:
        //do something with the model, and then notify view2
        break;
      case view3:
        //do something with the model, and then notify view3
        break;
      case view4:
        //do something with the model, and then notify view4
        break;
      ...
  }
}

Lo que parece horrible si escucha muchos eventos de teclado. Pero si está familiarizado con los patrones de diseño, puede usar Patrón de estado.

Me ayudó mucho en mi último proyecto, cuando encontré muchos estados de vista diferentes escuchando muchos eventos.

También te recomiendo que eches un vistazo a Compañero Marco, es como eventos de enlace de datos de PurEMVC + + Flex.

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