2 Stimmen

Binding eines Flex-Komponenten an eine Klassenfunktion

Ich habe mehrere Komponenten, in denen ich Buttons basierend auf der Übermittlung eines Benutzernamens an eine Funktion aktivieren möchte. Ich möchte die "enabled" Eigenschaft eines Buttons dynamisch binden, so dass, wenn das "somethingChanged" Ereignis ausgelöst wird, ein Button aktiviert oder deaktiviert werden kann.

Aber ich bin mir nicht sicher, wo das "somethingChanged" Ereignis ausgelöst werden soll. Es ist möglich, dass ich das "somethingChanged" Ereignis von mehreren Stellen in der Anwendung auslösen muss. Ist dies möglich mit einer gebundenen statischen Funktion?

Mache ich das auf die richtige Weise oder gibt es eine bessere Lösung?

EventManager.as

public class EventManager():void
{
    [Bindable(event="somethingChanged")]
    public static function hasAccess(myVal:String):Boolean
    {
    }
}

testform1.mxml

testform2.mxml

1voto

Joel Hooks Punkte 6209

Etwas wie das würde funktionieren.

package
{
    import flash.events.Event;
    import flash.events.EventDispatcher;

    public class EventManager extends EventDispatcher
    {
        [Bindable(event="somethingChanged")]
        public var hasAccess:Boolean = true;

        public static var instance:EventManager = new EventManager();

        public static function setHasAccess(hasAccess:Boolean):void
        {
            instance.hasAccess = hasAccess;
            instance.dispatchEvent(new Event("somethingChanged"));
        }
    }
}

Was folgendermaßen verwendet werden könnte:

Ich weiß nicht, ob dieser Ansatz gut ist. Diese Art von Funktionalität wäre wahrscheinlich besser in einer richtigen MVC-Struktur aufgehoben. Im Wesentlichen wird hier ein Singleton erstellt. Um es wie beschrieben zu implementieren, möchten Sie wahrscheinlich irgendwie eine Instanz pro Benutzer haben. Sie können jedoch nicht an eine statische Funktion binden.

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