Comunidad de diseño web y desarrollo en internet online

ayuda no entiendo como usar MVC en flex

Citar            
MensajeEscrito el 14 Abr 2010 07:27 am
hola, acabo de iniciar en el mundo de flex, hasta ahora solo e programado en as3 y no se mucho de mxml y estoy haciendo una pequeña aplicación en flex para aprender, yo quiero hacer una aplicación en MVC y quería una estructura mas o menos así: la aplicación empezara en el main.mxml, en este main.mxml se creara una variable tipo appController, y appController sera una clase hecha por mi en AS3 (appController.as), en este mismo main.mxml habrá 2 botones cada uno manda llamar la función load de la clase appController agregándole a los botones el evento click="variableAppController.load('vista a cargar', objetoDondeSeCargara)", entonces el controlador deveria cargar una vista hecha en mxml dentro de un ViewStack que se encuentre en el main.mxml, mi problema al no poder cargar toda una vista mxml desde as3, aqui les dejo los códigos de los archivos a como planeo que funcione aver si me puedo dar a entender mejor jejej

main.mxml:

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script><![CDATA[
import com.controller.appControll;
public var controller:appControll = new appControll(appViews);
]]></mx:Script>

<mx:VBox width="990" paddingLeft="0" paddingRight="0" horizontalCenter="0" top="12">
   <mx:HBox>
      <mx:Button label="appView1" click="controller.load('appView1', appViews)" ></mx:Button>
      <mx:Button label="appView2" click="controller.load('appView2', appViews)" ></mx:Button>
   </mx:HBox>

        <mx:ViewStack id="appViews" width="100%" height="550" creationPolicy="all">
            
        </mx:ViewStack>
</mx:VBox>

</mx:WindowedApplication>

vista1.mxml:

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel  xmlns:mx="http://www.adobe.com/2006/mxml" title="appView1" height="75%" width="75%" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">
     <mx:Label width="100%" color="blue" text="Hola mundo"/>
</mx:Panel>


vista2.mxml:

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel  xmlns:mx="http://www.adobe.com/2006/mxml" title="appView2" height="75%" width="75%" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">
     <mx:Label width="100%" color="blue" text="Hola mundo"/>
</mx:Panel>

y aquí es donde necesito la ayuda:
appControll.as:

Código ActionScript :

package com.controller 
{
   public class appControll
   {
      public function appControll() 
      {
         
      }

      public function load(view:String, obj:Object):void {         
           switch (view) {
                     case "appView1":   
                     // cargar la vista1.mxml en obj (aquí es donde no se como hacerle para cargar ese mxml);
                     break ;
                     case "appView2":
                      // cargar la vista2.mxml en obj (y aquí tampoco se como hacerle para cargar ese mxml);
                      break ;
   
                     default:
      
                 }
            
            
      }   
   }
}

Bueno espero que me haya podido explicar, saludos y gracias.

Por maiki5353

14 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Abr 2010 03:37 pm
¿Que es appViews que le estás pasando a appControll?
¿Porqué no declaraste el argumento en el constructor?

public function appControll(???)

Debería darte error de compilacion si no lo corriges

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Abr 2010 06:37 pm

solisarg escribió:

¿Que es appViews que le estás pasando a appControll?
¿Porqué no declaraste el argumento en el constructor?

public function appControll(???)

Debería darte error de compilacion si no lo corriges

Jorge


tienes razón se me fue ese parámetro no se por que, y creo que ya no puedo editar el post pero la linea de codigo correcta seria así:
public var controller:appControll = new appControll();

Por maiki5353

14 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Abr 2010 06:46 pm
Sin entrar en discusiones del modelo (el controlador debe saber de la vista), veo que a un método load del controlador le estás pasando un string que corresponde al título de los paneles, cuando en realidad debes cargar una instancia de la clase, en este caso vista1 y vista2 (los mxml son básicamente clases) Lo tienes que instanciar con new
De todas formas, porqué no lo pones manualmente en el ViewStack, ¿o hay algún motivo para llamar un método load de una clase controller?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Abr 2010 07:06 pm

solisarg escribió:

Sin entrar en discusiones del modelo (el controlador debe saber de la vista), veo que a un método load del controlador le estás pasando un string que corresponde al título de los paneles, cuando en realidad debes cargar una instancia de la clase, en este caso vista1 y vista2 (los mxml son básicamente clases) Lo tienes que instanciar con new
De todas formas, porqué no lo pones manualmente en el ViewStack, ¿o hay algún motivo para llamar un método load de una clase controller?

Jorge


wow muchas gracias, eso de que los mxml´s sean clases es algo raro para mi, en fin dio resultado instanciar las vistas mxml, muchas gracias, y lo hago así para que mi controlador sea el que se encargue de quitar o añadir vistas a la aplicación principal. Saludos.

Por maiki5353

14 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Abr 2010 09:26 pm
para poder utilizar el mvc debes utilizar algun fkr no reinventes la rueda..note parece

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Abr 2010 12:28 am
Ultimamente me encuentro con mucha gente que pomposamente usa frameworks pero que no tiene ni la mas minima idea de diseno ... no veo mal que a modo de aprendizaje se intente construir su propio ejemplo, sobre todo con un sistema tan usado como MVC

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Abr 2010 01:11 am

xcom escribió:

para poder utilizar el mvc debes utilizar algun fkr no reinventes la rueda..note parece

pues ahorita lo hago en forma de practica y depende de lo bien o mal que me salga, veré si lo implemento, aun que también estoy tratando de no usar mucho los frameworks por que algunas veces hacen las aplicaciones un poco mas pesadas, y eso es ovio pues están hecho para adaptarse a cualquier sistema a programar, y como mi objetivo principal es hacer un sistema en flex pero para AIR quisiera dejarlo lo mas optimizado posible ya que AIR no correo muy ligero en computadoras de bajos recursos y menos aun si tienen un SO Linux y pues la aplicación que pienso hacer se usara principalmente en este tipo de SO, unas pocas computadoras con Windows y otras mas pocas aun con MacOS. Saludos.

Por maiki5353

14 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Abr 2010 01:58 am
Si tu aplicacion es grande utiliza cairngrom mate u puremvc

cual de ellos usar ,depende del grado de la aplicacion que quieras hacer
experiencia

pero todos ellos tiene un mismo fin organizar , estructurar y modularizar tus aplicacion
yo voy por mate un bueno y senllizo de implementar aunque de principio cuesta
luego hace facil

la teoria es asi

vista donde esta la interfaz grafica
modelo en donde esta la logica y los estados de la vista

juntos vista y modelo (hacen la "vista")

para el modelo puedes apliacar el patron presentacion modelo , el cual hace que la vista vea siempre su modelo
pero que el modelo no sepa nada de ella. existen otros el cual funciona al reves.

luego cada modelo como es una abstraccion de la vista manda y despacha los eventos que son propios de cada una de ellas

eventos----aqui los eventos son los mismo para los eventos en flex, es decir debes extender las clase flash.event
por consiguiente, estaras customizando tus eventos a cada evento deberas colocar el valor true para que
cuando se lanze la propagacion se haga de abajo hacia arriba.

luego tenemos el corazon de este frk que es el denominada eventmap el cual gestiona todos tus eventos
cabe destacar que este eventmap es un archivo mxml y puedes estar en cualquier lugar de tu aplicacion
en mate los eventos viajan atraves de un unico bus. es bueno , pero hay que tener cuidado al programar
los eventos y no retir tus constanes

este event map gestiona tambien las llamadas retomas y los servicios que van desde tu apliacion hacia tu
back-end

y para gestionar la aplicacion ( las reglas de negocio) se utlizan administradores, estos administradores
tendran los resultados los manejaran y los devolveran a los modelos.

Finalmente como la vista no sabe nada , que pasa cuand cambia una propiedad en esta vista??? bueno
entra aqui lo se conoce como inyeccion recuerda que flex las propiedades se les puede dar la propiedad
de bindable (basado en el patron observer) entonoces cuando los resultados cambien via inyeccion seran
actualizados hacia la vistas.

y los modulos???

Pues lo mismo solo que en ves tener un event map para toda la aplicacion se tendran event map locales
y un event map principal.

y los modulos seguien las mismas reglas de creacion de flex en este frk.

y colorin colorado este guea se acabodo y el que no le gusto que se vaya a la cocha....jajabroma :lol: :lol: :lol:

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2010 01:46 am
porque no usar app echas en Flex y utilizar modulos?

Por Shadonwk

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2010 01:31 pm
No veo cual es el problema

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.