Elemente enablen/disablen

GELight

Mitglied
Hi,

Ich habe beliebig verschachtelte Komponenten, die in sich gesehen eigene Zustände und Eigenschaften (Model) haben. Das heißt ... jede Komponente kann für sich gesehen auch mal DISABLED und somit inaktiv sein.

Wenn ich nun eine Komponente disable, dann muss dieser Zustand natürlich auch für die gesamte Unterstruktur / Komponenten gesetzt werden. Allerdings kann es ja sein, dass eine Komponente schon vorher disabled war und wenn ich nun eine der darüber liegenden Komponenten enable, dann werden "bislang "alle darunter liegenden auch wieder enabled. Die Komponenten, die vorher schon disabled waren, müssten natürlich weiterhin disabled bleiben.

Ich hab gerade keine Idee, wie ich das "möglichst allgemeingültig" umsetzen könnte, da ich jetzt grade nicht weiß, welche Use-Cases es neben Enable/Disable noch geben könnte, die sowas in der Art brauchen.

Habt Ihr ne Idee oder wie würdet ihr hier herangehen?

Gruß Mario
 
Oh sorry... dann versuche ich es mal konkreter zu beschreiben.
Es handelt sich um eigene Klasseninstanzen, die alle eine Eigenschaft "enable" haben, die auf true / false gesetzt werden kann.
Ruft man von einer Komponente die Methode .disable() auf, dann triggere ich ein Event ( kein DOM Event ), welches durch die Children Komponenten der aufgerufenen Komponente in die Struktur nach unten bubble't, wenn man so will.

Innerhalb des Event-Handlers, setze ich bislang die Eigenschaft "enable" einfach nur auf true / false.
Und nun fehlt mir eine Idee, wie ich die zuvor gesetzten Eigenschaften der Unterkomponenten wieder korrekt setzen lasse, damit z.B. Komponenten die zuvor schon disabled waren, auch nach einem Enablen einer übergeordneten Komponente wieder passen.

Hoffe jetzt ist es klarer :)

Gruß Mario
 
He he... jo jo... ist schon Javascript... keine Angst.
Ich bin WebEntwickler und bastel an einem kleinen Javascript Component Framework.
 
Jetzt, wo du es sagst ... stimmt ... eigentlich müsste es doch reichen,
wenn das Bubbling des Events nur bis zur nächsten schon disabled'en Komponente geht.
Das Gleiche müsste dann doch auch im umgekehrten Fall beim "Enablen" einer Komponente funktionieren.
Oder übersehe ich gerade was?
 
Wenn ich dich richtig verstanden habe, willst Du folgendes:
Disable: Soll sich auf alle Kindelemente auswirken.
Enable: Soll sich nur auf das aktuelle Element auswirken.
D. h. das Bubbling soll nur beim Disable wirksam werden. Kannst Du dann nicht beim Enable nur beim aktuellen Element die betr. Eigenschaft setzen und auf den Aufruf der Funktion verzichten? Oder dieser Funktion einen Parameter mitgeben, der das Bubbling ein- oder ausschaltet?
 

Neue Beiträge

Zurück