2009-08-12 2 views
0

A Flex-Komponentenwerte werden von der init-Methode initialisiert. In einem Anwendungsablauf Wie wird ein mxml-Komponentendatenwert aktualisiert? Als init wird nur beim Start selbst aufgerufen.Best Practice zum Definieren und Aktualisieren der MXML-Komponente in der Flex-Anwendung

Beispiel mxml Komponente so einfach wie Tastenbeschriftung oder Text sein kann so komplex wie Repeater, dessenderen Daten-Provider ist ein Webdienst (bedeutet eine frische quesy vorgenommen werden soll, die Daten zu ziehen und die Datenprovider des Repeaters refresh)

+0

Bitte ein Beispiel für die Art von Daten geben Sie aktualisieren möchten. –

Antwort

0

Wenn der Datenprovider eine Sammlung oder ein Array ist, aktualisiert er sich selbst, wenn Elemente der Sammlung hinzugefügt oder daraus gelöscht werden. Sie können das CollectionEvent.CollectionChange-Ereignis überwachen, um zu sehen, wann sich eine Auflistung ändert.

Ich bin nicht wirklich sicher, was du meinst obwohl? Bist du im Begriff, verbindlich zu sein?

+0

Arrays feuern Ereignisse bei internen Änderungen nicht ab, z. wenn ein Gegenstand darauf gedrängt wird und somit Ihre Aussage falsch ist. ArrayCollection löst jedoch Ereignisse aus und sollte genau so verwendet werden, wie Sie es nennen. –

0

Wenn Sie das gesamte Steuerelement neu initialisieren möchten, könnten Sie ein "reset" -Ereignis erstellen und den Handler für das Zurücksetzen das gleiche Verhalten wie den init-Code ausführen lassen.

Das ist die beste, das ich ohne weitere Details zu tun ...

+0

könnte mir einen Template-Code eine MXML-Repeater-Komponente oder eine Komponente zur Verfügung stellen. Dies würde die Idee klären –

0

Sie sich Getter und Setter für die Eigenschaften erstellen sollten Sie ändern und eine Aktualisierung wollen, ist danach erforderlich. zum Beispiel:

private var _tmp : String = ''; 
public function set tmp(val : String) : void { 
     this._tmp = val; 
     this.doOtherDataRefreshNeeded(); 
} 
public function get tmp() : String { 
     return this._tmp; 
} 

und diese Weise jedes Mal den Code, der diese Komponente verwendet, und aktualisieren muss es tmp Eigenschaft ist. Der Setter wird aufgerufen und dort kann neben der Zuweisung des Wertes noch viel anderes passieren.

für einfache XML-Komponenten als Texte und Eingaben, verwenden Sie Bindungen {} für ihre Datenwerte. Diese sollten aktualisiert werden, sobald sich die Daten ändern. Wenn nicht, rufen Sie die Methode .invalidateNow() auf, um die Aktualisierung zu erzwingen.

+0

Dies ist eigentlich nicht wirklich Best Practices. Der Setter kann während eines Frames zehn, hundert oder sogar tausend Mal aufgerufen werden, was bedeuten würde, dass mehrere unnötige Berechnungen durchgeführt werden. Es empfiehlt sich, eine der Invalidierungsmethoden (möglicherweise invalidateProperties) aufzurufen und dann während der Festschreibungsphase (commitProperties) die tatsächliche mit der Aktualisierung verbundene Arbeit auszuführen. Dies garantiert, dass die Invalidierungsmethode während eines Rahmens mehrmals aufgerufen werden kann, die tatsächliche Arbeit jedoch nur einmal ausgeführt wird. –

+0

Ich denke, invalidateProperties ist die Standardmethode, um bessere Kontrolle über UI-Komponenten zu erhalten –

0

Verwendung validateNow() -Methode in MXML-Komponente in Verfahren Aktualisierung

Verwandte Themen