2012-03-23 18 views
6

Me gusta mucho el concepto de acciones ExtJS. Miré at this example y es (casi) exactamente lo que necesito. Lo único es que estoy tratando de usar el patrón MVC. tengo:Dónde encaja la acción ExtJS en el patrón MVC

  • invoicelist (ver)
  • inovice (controlador)
  • factura (modelo)
  • Facturas (tienda)

¿Dónde y cómo puedo poner definición de Acción ? ¿Deberían estar en el controlador? ¿Cómo llamarlos y referenciarlos? Necesito varias Acciones y estarán en el menú contextual y en el menú en la barra de herramientas del facturador.

Respuesta

6

Buena pregunta. Parece que Actions rompe el patrón MVC al combinar de alguna manera los paradigmas View y Controller bajo un mismo techo. Debido a que tienen controladores, llevan funcionalidad con ellos, así como elementos de la interfaz de usuario como texto e íconos. Sin embargo, no son componentes, en el sentido ExtJS de la palabra. Por lo tanto, no puede orientarlos con un selector.

La mejor manera de pensar en ellos es como un objeto de configuración. Ni mas ni menos. Un objeto de configuración no tiene sentido en sí mismo, y no se puede orientar. Lo mismo con acciones. En realidad, se pueden usar como un objeto de configuración para botones, por ejemplo.

Ahora, ¿dónde deberían ir? La respuesta a eso creo que realmente depende de usted como diseñador. Debido a que no confirman el patrón estricto de MVC, usted puede tomar una decisión basada en cuán ampliamente necesita que se tenga acceso a una acción en particular. Para una acción verdaderamente global compartida por muchas vistas, incluso podría ponerla en la configuración de la aplicación: MyApp.app.actions ["delete"] por ejemplo. El controlador puede ser un buen lugar para colocarlo si el controlador configurará varias vistas y las conectará con las tiendas. Pueden potencialmente conectar múltiples vistas con acciones compartidas.

Espero que esto ayude. Buena suerte :)

+0

Gracias. Actualmente estoy intentando crear algunas acciones que se usarán en una vista. Es una ventana con barra de herramientas y cuadrícula. La acción aparecerá en el submenú de la barra de herramientas y en el menú contextual cuando el usuario haga clic con el botón derecho en la fila de la grilla. Para este escenario, creo que debería ponerlo en Controlador para esta Ventana, ¿verdad? ¿Cómo? Solía ​​conectar eventos desde el controlador a las vistas, pero no sé cómo INSERTAR objetos en la interfaz de usuario. – Milan

+0

Lo que haría entonces es crear acciones en su clase de vista y hacer que los manejadores de acciones activen algunos eventos personalizados. En su clase de controlador puede escuchar los eventos personalizados que emiten desde su vista. – dbrin

+0

El fragmento de código para activar eventos personalizados de acciones sería muy apreciado. – Milan

1

acaba de hacer un someview.fireEvent('Yourcustomevent');

Cuestiones relacionadas