Zurück   Flashforum > Flex und AIR > Flex allgemein

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-09-2011, 15:38   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Bidirektionales Databinding

Hallo zusammen.

Ich versuche gerade ein Textfeld mit einer XML Datei zu koppeln. Wenn ich das databinding über MXML definiere funktioniert es wunderbar.
Sobald ich allerdings innerhalb von AS versuche diese Elemente miteinander zu verknüpfen ist die Richtung nicht bidirektional.

Ich hatte schon versucht mit BindingUtilis zu arbeiten aber leider ohne Erfolg da ich keine Zieleigenschaften von meinem Tree, bzw von meiner XML bekomme.

Anbei mal der Code zur verdeutlichung was ich meine (ich hoffe es wird dadurch klar - falls nicht reiche ich weitere Informationen nach ):

PHP-Code:
<?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" minWidth="955" minHeight="600"
               creationComplete="onInit()">
    
    <fx:Script>
        <![CDATA[
            import mx.binding.utils.BindingUtils;
            import mx.events.ListEvent;
            
            [Bindable]public var meineXML:XML = new XML();
            
            public function onInit():void{
                var xmlLoader:URLLoader = new URLLoader();
                
                xmlLoader.load(new URLRequest("data.xml"));
                
                xmlLoader.addEventListener(Event.COMPLETE, ausgabeDaten);
            }

            public function ausgabeDaten(e:Event):void{
                meineXML = new XML(e.currentTarget.data);
            
            }
            
            
            protected function onChange(event:ListEvent):void
            {
                // TODO Auto-generated method stub
                ausgabeTextDynamisch.text = event.target.selectedItem.@name;
            }
            
        ]]>
    </fx:Script>
    <s:TextInput id="ausgabeTextDynamisch" x="276" y="133"/>
    <s:TextInput id="ausgabeTextStatisch" x="276" y="163"/>
    
    <mx:Tree x="30" y="55" dataProvider="{meineXML.children()}" labelField="@name" change="onChange(event)"/>
    
    <!-- Damit klappt es statisch -->
    <fx:Binding source="meineXML.children()[0].@name" destination="ausgabeTextStatisch.text" twoWay="true"/>
    
</s:Application>
Wenn ich etwas mit dem Textfeld "ausgabeTextStatisch" ändere, wird die XML Datei (und der Tree) aktualisiert.

Wenn ich eine Data-Bindung über AS versuche übernimmt das Textfeld lediglich den Wert des angeklickten Objekts und das auch nur, wenn man es frisch anklickt.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 08-09-2011, 15:44   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Bitte einmal das Kapitel über DataBinding nachschlagen. XML kann keine PropertyChangeEvents dispatchen, da es kein Events dispatchen kann. Man sollte kein XML als Model nutzen, da man keine Änderungen nachvollziehen kann.
Omega Psi ist offline   Mit Zitat antworten
Alt 08-09-2011, 18:01   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Ziel meines aktuellen Programmes ist die Bearbeitung von XML Dateien über einen Tree sowie dynamisch erstellter Textfelder.

Grundsätzlich scheint es ja zu funktionieren wenn man es über <fx:Binding/> handhabt. Zumindest wird der Tree korrekt angezeigt und die XML, die ich nach Änderungen in den Textfeldern ausgebe, hat die Änderungen auch übernommen.

Da ich die XML-Datei ohne größere Umwege wieder abspeichern möchte wollte ich den Weg mit dem Data-Binding gehen. Wenn ich über eine Array-Collection gehe müsste ich die geladene Datei ja auseinander rupfen und im Anschluss daraus wieder eine neue XML generieren.

Oder ist eine Alternative doch nicht so umständlich? (In Hinblick auf beliebige XML-Dateien)

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 08-09-2011, 19:51   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Ich würde mich wirklich mal mit Datenstrukturen anfreunden. Ich kann dir das nur raten, denn alle Projekte, die über die Größe dieser MXML hinausgehen sind so nicht wartbar.

Ausserdem solltest du eine XMLListCollection verwenden, anstatt einer XMLList als Dataprovider.

Ausserdem funktioniert es halt einfach nicht, wenn die zu bindenden Instanzen nicht bindable sind, um mich zu wieder holen. Flex bietet viel Convenience, aber man muss sich schon auch mit den Grundlagen befassen (was ist [Bindable]?).
Omega Psi ist offline   Mit Zitat antworten
Alt 09-09-2011, 05:46   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Guten Morgen.

Bei größeren Projekten lege ich auch entsprechende Klassen an, in denen ich die Datenstruktur aufbaue. Für dieses Projekt werde ich es nicht tun da es höchstwahrscheinlich nicht über 100 Zeilen Code werden und es auch nicht mit anderen Programmen zusammenarbeiten muss.

Ich habe mir überlegt, dass ich bei einem Aufruf des Tree-Elements die Position des ausgewählten Childs zu speichern und nach der Bearbeitung die Elemente in der XML ersetze.

PHP-Code:
Ausserdem solltest du eine XMLListCollection verwendenanstatt einer XMLList als Dataprovider
Werde ich mir gleich mal anschauen. Danke.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 09-09-2011, 06:00   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Naja, man sollte sich vielleicht überlegen, ob man sich nicht um sich selbst einfach zu drillen, eher mal auch den augenscheinlich komplizierteren Weg nimmt.

Es bringt halt nichts, wenn auch 100 Zeilen lange Projekte nur mit Biegen und brechen umgesetzt werden können.
Omega Psi ist offline   Mit Zitat antworten
Alt 09-09-2011, 06:34   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Auf meiner ToDo Liste stehen solche Themen ganz weit Oben. Ich lese auch schon nach "Feierabend" Bücher wie Flash Engineering: Agile Ansätze zum Bau von RIAs mit Flash, Flex und ActionScript.
Aber ich sollte wohl mal zu ein paar Kursen gehen für objektorientierte Programmierung und Projektmanagement. Leider habe ich diesbezüglich noch keine guten Angebote gefunden.

zu dem Problem oben: Ich habe es jetzt so gelöst, dass ich beim Ändern der Daten in den Textfeldern direkt auf das entsprechende Element im Tree zugreife. Änderungen am Tree werden automatisch an dessen DataProvider weitergegeben und somit habe ich eine veränderte XML die ich über PHP wieder speichern kann.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 09-09-2011, 07:01   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Was solche Aspekte deiner Entwicklung als Entwickler angeht, da kann ich wenig zu sagen, ich würde mich in der Hinsicht aber eher "richtiger" Programmierung annähern als mich durch Flash spezifischer Literatur an Agile Spoftware Entwicklung heranzuwagen. Zudem schaut auch die Gliederung eher so aus, als ob das Buch von allem zu viel, anstatt genug macht.

Was Flex spezifische Aspekte angeht: Lese die Doku. Da stehen alle Themen drinn und von dort aus kann man wirklich ansetzen und in die Tiefe gehen.
Omega Psi 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit DataBinding kev52 Flex programmieren 4 09-01-2009 10:07
TabNavigator mit DataBinding an ModelLocator ullim Flex programmieren 2 30-11-2008 16:25
States und Databinding Omega Psi Flex programmieren 6 02-03-2008 18:38
Problem mit actionscript databinding tschai Komponenten und SmartClips 0 24-10-2006 10:59
Tutorials für Databinding flashcowboy Flash MX 2004 1 16-10-2003 14:42


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele