Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-01-2009, 15:25   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Ort: Potsdam
Beiträge: 156
Problem mit DataBinding

Hallo,

ich habe ein recht nerviges Problem beim Thema DataBinding:

Folgende Umgebung:

Einem DataGrid wird via DataBinding eine ArrayCollection (members) zugeordnet. Wenn ich ein Objekt im DataGrid markiere, so wird dieses Objekt (member) via Binding einem Formular zugeordnet.

Code:
protected function onGridClick(event:ListEvent):void
{
	currentMember = new Member();
	currentMember = myMembers.getItemAt(event.rowIndex) as Member;
}
Hier ist im MXML das Binding:

Code:
<components:MemberFormView id="form_memberData" member="{this.currentMember}" />
Wenn sich nun in der Komponente MemberFormView etwas ändert, so wird diese Änderung automatisch auch im DataGrid vorgenommen. Die Problematik dahinter ist mir auch bewusst, denn am Ende referenzieren die Elemente ja alle im Speicher auf das Objekt in der ArrayCollection. Wie kann ich aber eine Kopie von diesem Objekt erstellen, ohne dass es nur eine Referenz auf das Original ist sondern unabhängig?
kev52 ist offline   Mit Zitat antworten
Alt 08-01-2009, 17:20   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Das ist kein DataBinding Problem. Implementiere eine clone Methode und arbeite mit dem Klon wenn nötig.
Omega Psi ist offline   Mit Zitat antworten
Alt 09-01-2009, 09:40   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Ort: Potsdam
Beiträge: 156
Genau das meine ich ja, wie bekomme ich es hin, dass auch im speicher eine neue Kopie/Clone des Objektes erstellt wird.

Ah danke der Suche bin ich nun schlauer thx für den Ansatz ;o)

Geändert von kev52 (09-01-2009 um 09:46 Uhr)
kev52 ist offline   Mit Zitat antworten
Alt 09-01-2009, 09:48   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Und ich schrieb: implementiere eine Methode clone
ActionScript:
  1. package fs.example.utils
  2. {
  3.  
  4.     public interface ICloneable
  5.     {
  6.  
  7.         function clone():Object;
  8.     }
  9. }
ActionScript:
  1. package fs.example
  2. {
  3.  
  4.     import flash.events.Event;
  5.     import flash.events.EventDispatcher;
  6.     import fs.example.utils.ICloneable;
  7.  
  8.     public class MyType extends EventDispatcher implements ICloneable
  9.     {
  10.  
  11.         private var _name:String;
  12.  
  13.         [Bindable("nameChanged")]
  14.         public function get name():String
  15.         {
  16.             return this._name;
  17.         }
  18.  
  19.         public function set name(value:String):void
  20.         {
  21.             if (this._name == value) return;
  22.             this._name = value;
  23.             this.dispatchEvent(new Event("nameChanged"));
  24.         }
  25.  
  26.         public function MyType()
  27.         {
  28.             super();
  29.         }
  30.  
  31.         public function clone():Object
  32.         {   var newClone:MyType = new MyType();
  33.             newClone.name = _name
  34.             return newClone;
  35.         }
  36.     }
  37. }
Alernativ könntest du auch IFactory implementieren.
Omega Psi ist offline   Mit Zitat antworten
Alt 09-01-2009, 10:07   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Ort: Potsdam
Beiträge: 156
jop so hab ich es jetzt auch gemacht und es funktioniert bestens! Vielen Dank noch mal!
kev52 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele