• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Zustand - Enable/Disable

GELight

New member
Hi alle zusammen,

Ich sitze bzw. grüble über ein kleines Problem was ich habe.
Und zwar habe ich beliebig verschachtelte Komponenten, die in sich gesehen natürlich ihre eigenen Zustände und Eigenschaften (Model) haben. Das heißt ... jede Komponente kann für sich gesehen auch mal DISABLED sein und somit inaktiv.

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

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
 
Du könntest den Zustand einer Komponente so bestimmen:
Es ist nur dann enabled, wenn es selbst und sein Elternelement enabled sind:
Code:
function El(parent){
	this.parent = parent;
	if (parent){
		parent.children.push(this);
	}
	this.children = [];
	var enabled = true;
	Object.defineProperty(this, "enabled", {
		set: function(value){
			enabled = !!value;
		},
		get: function(){
			return enabled && (!this.parent || this.parent.enabled);
		}
	});
}
El.prototype.toString = function(){
	return (this.enabled? "Enabled": "Disabled") + "[" + this.children.join(", ") + "]";
};

var p = new El();
var c = new El(p);
var gc1 = new El(c);
var gc2 = new El(c);
console.log(p.toString());
gc1.enabled = false;
console.log(p.toString());
c.enabled = false;
console.log(p.toString());
 
Zurück
Oben