Não entendi muito bem seu problema, mas rode o exemplo que abaixo para
você ver como clonar um objeto, manter seu estado original, etc ..
Como não compreendi seu cenário essa com certeza não será sua solução,
mas você pode começar a procurar suas respostas a partir daí. Qualquer
dúvida volta a perguntar.

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
                           xmlns:s="library://ns.adobe.com/flex/spark"
                           xmlns:mx="library://ns.adobe.com/flex/mx"
                           initialize="application1_initializeHandler(event)">
        <fx:Script>
                <![CDATA[
                        import mx.events.FlexEvent;
                        import mx.utils.ObjectUtil;

                        [Bindable]
                        public var meuObjetoOriginal:Object = null;

                        protected function
application1_initializeHandler(event:FlexEvent):void
                        {
                                meuObjetoOriginal = ObjectUtil.copy(meuModelo);
                        }

                ]]>
        </fx:Script>

        <fx:Declarations>
                <fx:Model id="meuModelo">
                        <root>
                                <id>1</id>
                                <nome>@{txtNome.text}</nome>
                                <apelido>@{txtApelido.text}</apelido>
                        </root>
                </fx:Model>
        </fx:Declarations>

        <s:layout>
                <s:VerticalLayout verticalAlign="middle" 
horizontalAlign="center"/>
        </s:layout>

        <s:Label text="ORIGINAL:" />
        <s:Label text="ID: {meuObjetoOriginal.id}" />
        <s:Label text="Nome: {meuObjetoOriginal.nome}" />
        <s:Label text="Apelido: {meuObjetoOriginal.apelido}" />
        <mx:Spacer height="50"/>
        <mx:Spacer height="50"/>
        <s:Label text="MODIFICADO:" />
        <s:Label text="ID: {meuModelo.id}" />
        <s:Label text="Nome: {meuModelo.nome}" />
        <s:Label text="Apelido: {meuModelo.apelido}" />
        <mx:Spacer height="50"/>

        <mx:FormItem label="Nome">
                <s:TextInput id="txtNome" text="Pablo Souza" />
        </mx:FormItem>
        <mx:FormItem label="Apelido">
                <s:TextInput id="txtApelido" text="Pablo" />
        </mx:FormItem>

</s:Application>





Abs!

------
Pablo Souza
http://rectius.com.br
@pablo_souza



On Dec 16, 4:47 pm, Gilsones <[email protected]> wrote:
> Preciso deixar uma var ou const para que seu valor não seja alterado.
> O mais adequado seria usar const, mas não consigo setar o valor depois
> dela declarada,
> tentei fazer assim:
> [Bindable]
> public var objeto:Object;
> public const original:Object = objeto;
> Mas "original" fica vazia, testei com var, mas acontece o mesmo,
> por isso criei o "addedHandler".
> Tentei clonar o objeto com várias funções que achei na internet,
> mas não adianta porque o objeto é bindable, então o clonado é
> modificado tbm.
> Existe alguma forma de forçar a alteração de uma const?
> ou alguém tem uma idéia melhor?
>
> Vejam o codigo:
>
> == JanelaCompleta.mxml (componente MXML) =====
>
> // Recebe os dados, preenche o formulário
> // se alterar o formulário, o objeto tbm é alterado
> [Bindable]
> public var objeto:Object;
>
> // Objecto para manter os dados antes das alterações
> public const original:Object = new Object();
>
> // Função para o evento Added
> protected function addedHandler(event:Event):void {
>     original = objeto; // Dá pau, pq "original" é uma constant
>
> }
>
> protected function cancelaAlteracao(){
>     objeto = original; // Para retornar o objeto original
>
> }
>
> ====================
> == Main.mxml =========
>
> protected function abrirNovaJanela():void {
>     var janela:JanelaCompleta = new JanelaCompleta();
>     janela.objeto = {id:,nome,apelido};
>     addChild(janela);
>
> }
>
> ====================

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a