2011-06-11 11 views
6

Estoy tratando de concentrarme en el marco MVC de Sencha Touch, pero encuentro un par de enfoques diferentes. En uno, encontró here, hay un enfoque para estructurar las aplicaciones de Sencha Touch presentado en SenchaCon 2010. Tiene el peso adicional de ser por un empleado de Sencha Touch, pero tiene varios meses de antigüedad. En otras publicaciones más recientes sobre Sencha Touch MVC, tienen tutoriales (como here, así como MEAP de Manning en Sencha de Jay Garcia) que parecen depender de Ext.Dispatch en las vistas para llamar a métodos de control específicos, pasando elementos adicionales al controlador, lo que hace que las vistas sean compatibles con el controlador.Mejores prácticas Sencha Touch MVC

Mi pregunta es, ¿cuál es la mejor práctica para estructurar una aplicación Sench Touch MVC?

Respuesta

3

Sugiero que sus controladores sean compatibles con la vista. Cuando un controlador recibe una distribución de eventos que debe tener algo similar a lo siguiente:

this.controllerViewOne = this.controllerViewOne 
         || this.render({ 
           xtype: 'panel', 
           listeners: { 
             onMajorUIAction : function(params){ 
              Ext.Dispatch({ 
               controller : 'ProperController', 
               action  : 'ProperAction', 
               historyUrl : 'ProperHistoryUrl', 
               params : params 
              }); 
             } 
           } 
          }); 

Esto tiene la ventaja añadida de tener todos los oyentes "principal" para cada uno de los controladores de vistas en un solo espacio. También significa que reutilizar las vistas para otros controladores se vuelve más fácil.

Todas sus vistas deben tener oyentes que ayuden a abstraer las complejidades de los componentes individuales y sus eventos/oyentes.

Uso un administrador de IU para cambios en la IU global como ocultar/mostrar una barra de herramientas principal o mostrar un botón Atrás.

+0

Siempre y cuando se asegure de que romper su aplicación en varios controladores de este won' causa un aumento de volumen de sus controladores. – Ballsacian1

+0

Gracias por la información. Estoy de acuerdo en que hacer que los controladores tengan en cuenta que están escuchando eventos tiene mucho sentido. También he escuchado que Ext.dispatch() puede desaparecer, si Touch sigue a Ext JS: [link] (http://www.sencha.com/forum/showthread.php?137166-Sencha-Touch-MVC-Best- Prácticas) –

6

Tenía preguntas similares. Sencha automatiza una gran cantidad de creación de captadores para sus instancias de componentes de vista. Es muy confuso

He tomado Sencha Touch 2.0 y armé una aplicación completa de andamio MVC como ejemplo. Lo he basado en la arquitectura ExtJS 4.0 MVC. Esto funcionará de manera inmediata con la vista previa para desarrolladores de Sencha Touch 2.0 y debería ahorrarle una tonelada de tiempo.

https://github.com/FrancisShanahan/SenchaTouch2MVCHelloworld

Para responder a su pregunta específica, la arquitectura MVC últimas ExtJS 4.0 establece los oyentes a instancias de componentes de vista dentro del evento init del controlador. He aquí un ejemplo tomado del proyecto de github ya vinculado:

Ext.define('HelloWorld.controller.Home', { 
    extend: 'Ext.app.Controller', 
    views: ['Home', 'SimpleList'], 
    .. etc... 
    init: function() { 
     // Start listening for events on views 
     this.control({ 
       // example of listening to *all* button taps 
       'button': { 'tap': function() { 
      console.log('Every button says Hello world'); 
     } 
    ... 

Avísame si ayuda, respecto, -Fs

+0

¡Gracias, echaré un vistazo! –

+0

Tenga en cuenta que esto ha quedado obsoleto en sencha2-rc2 (feb 2012). Si declaras vistas en los controladores, recibes una advertencia de que debes declarar todas tus vistas en el archivo de la aplicación. – widged

+0

Gracias, widged; Me gusta lo que veo hasta ahora en Sencha 2. –