2 Stimmen

Flex bedingte Datenbindung

Ich habe zwei Etiketten in meiner Flex-MXML-Komponente.

Die erste zeigt die Abspielzeit des Videobildschirms an, eine weitere wird für denselben Zweck verwendet.
Der Unterschied besteht darin, dass wir im Addiermodus (der durch eine Flag-Variable bestimmt wird)
beide sollten die aktuelle Abspielzeit mittels Bindung anzeigen.

aber wenn wir uns im Bearbeitungsmodus befinden (wiederum durch die Flagge bestimmt), sollte das letztere Etikett statisch bleiben, genauer gesagt, der aus der Datenbank abgerufene Wert.

wie kann ich das mit Actionscript machen. Ich habe ChangeWathcer ausprobiert, aber ich fand es ein bisschen knifflig. Gibt es einen anderen, einfacheren Weg oder übersehe ich etwas.

Hier ist mein Code.

private function init():void
{
if (queFlag == 'a')
{
// timeLbl.text = currentTimeLbl.text unter Verwendung eines Bindungsmechanismus
}
else if(queFlag == 'e')
{
// timeLbl.text = 'aus der Datenbank abgerufener Wert' ;
}

}

Hier zeigt currentTimeLbl die Abspielzeit von videoDisplay an, so dass sie sich während der Wiedergabe des Videos dynamisch ändert.

bitte helfen Sie mir weiter.

1voto

Stiggler Punkte 2790

Sie könnten dies etwa wie folgt tun:

<Label id="timeLbl" text="{timeLabelText}"/>

<Label id="currentTimeLbl" change="dispatchEvent('currentTimeLblChanged')"/>

[Bindable(event = "queFlagChanged")] 
[Bindable(event = "currentTimeLblChanged")]
private function get timeLabelText():String   
{
    if(_queFlag == 'a')
    {
        return currentTimeLbl.text;
    }
    else
    {
        return 'value retrived from database';
    }        
}

public function set queFlag(value:String):void
{
    _queFlag = value;

    dispatchEvent(new Event("queFlagChanged"));
}

0voto

Juve Punkte 10178

Hier ist ein sehr kurzer Weg der bedingten Bindung in Flex. Wenn Sie die Bedingungen in MXML-Bindungen mit geschweiften Klammern kodieren, werden sie vom MXML-Compiler in Zuhörer für alle an diesem Ausdruck beteiligten Objekte umgewandelt.

Hier ein praktisches Beispiel:

<mx:CheckBox id="flagBox"/>
<mx:ComboBox dataProvider="{['a','e']}" id="flagBox2"/>
<mx:TextInput id="txtBox"/>
<mx:Label text="default: {txtBox.text}"/>
<mx:Label text="conditional (bool): { (flagBox.selected)? txtBox.text: 'default' }"/>
<mx:Label text="conditional (value): { (flagBox2.selectedItem == 'a')? txtBox.text: 'default' }"/>
  1. Überprüfen Sie flagBox führt dazu, dass auf dem Etikett #2 "default" angezeigt wird, andernfalls wird der Text aus dem Feld txtBox wird angezeigt.
  2. Auswahl von "a" in flagBox2 führt dazu, dass auf dem Etikett #3 "default" angezeigt wird, andernfalls wird der Text aus dem Feld txtBox wird angezeigt.

Ich verwende dies regelmäßig, um meine Codezeilen in meiner UI-Logik zu reduzieren, und es funktioniert bei mir recht gut. Ein Problem bei dieser Technik ist, dass man nicht alle Logiksymbole in Curly-Braket-Bindings verwenden kann, wie z.B. < o && aber damit kann ich normalerweise leben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X